2016-06-20 4 views
0

while() 루프 이후에 첫 번째 레코드를 가져 와서 문자열을 문자열로 반환하려면 << >>에 도움이 필요합니다. 한 행에 많은 열이 있는데 문자열 st로 선언하는 데 문제가 있습니까? 같은 보통 string st = new string() 다음과 같은 등이 목적을 위해 모두 StringBuilder를 사용하여 그것을SQL 데이터베이스에서 데이터를 가져와 문자열로 반환

감사

public string Get_aodIdeal(string SubmittedBy) 
{ 
    String errMsg = ""; 
    Guid? rguid = null; 
    int isOnContract = 0; 
    int isFreeMM = 0; 
    string _FileName; 
    DateTime InstallDateTime = DateTime.Now; 
    string FileDate = ToYYYYMMDD(DateTime.Now); 
    errMsg = "Unknown Error."; 

    SqlConnection conn = null; SqlCommand cmd = null; 
    string st = null; 

    conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["iDeal"].ConnectionString); 
    cmd = new SqlCommand(); 
    string SQL = "select TOP 1 * from table1 Order by SubmittedOn desc"; 
    SqlDataAdapter sqd = new SqlDataAdapter(SQL, conn); 
    cmd.CommandTimeout = 1200; 
    conn.Open(); 
    SqlDataReader sqr; 
    //sqd.SelectCommand.Parameters.Add("@Submitted", SqlDbType.Int).Value = PostID; 
    sqr = sqd.SelectCommand.ExecuteReader(); 
    while (sqr.Read()) 
st = new string{ 
    rguid = cmd.Parameters["@rguid"].Value as Guid?, 
       ridno = int.Parse(sqr["ridno"].ToString()), 
       SubmittedOn= DateTime.Parse(sqr["SubmittedOn"].ToString()), 
       SubmittingHost = sqr["SubmittingHost"].ToString(), 
       ServiceAgreementNo = sqr["ServiceAgreementNo"].ToString(), 
       DocumentID = sqr["DocumentID"].ToString(), 
       Source = sqr["Source"].ToString(), 
       FileName = sqr["FileName"].ToString(), 
       FileType = sqr["FileType"].ToString(), 
       FileDate = DateTime.Parse(sqr["FileDate"].ToString()), 
       InstallTime = DateTime.Parse(sqr["InstallTime"].ToString()), 
       CalenderCode = cmd.Parameters["CalenderCode"].Value as Guid, 
       isFreeMM = bool.Parse(sqr["isFreeMM"].ToString()), 
       isOnContract = bool.Parse(sqr["isOnContract"].ToString()), 
       isProcessed = bool.Parse(sqr["isProcessed"].ToString()), 
       ProcessedByFullName = sqr["ProcessedByFullName"].ToString(), 
       isDelete = bool.Parse(sqr["isDelete"].ToString()), 
       version = int.Parse(sqr["Version"].ToString()), 
       LastUpdatedBy = DateTime.Parse(sqr["LastUpdatedBy"].ToString()), 
       LastUpdatedOn = DateTime.Parse(sqr["LastUpdatedOn"].ToString()), 
       shopGuid = sqr["shopGuid"].ToString(), 
       MacID = sqr["MacID"].ToString(), 
       MSISDN = sqr["MSISDN"].ToString() 
} 
+0

당신이 메서드에서 반환 할 않고 왜 대신'SqlDataReader'의'ExecuteScalar' 사용하지 않는 열 열이 많이있을 경우? –

+0

@ TimSchmelter 매우 SQL과 혼동도 거기에 어떤 recommandations도 여러 가지가 있습니까? 어떻게 모든 열을 가져 와서 문자열로 반환합니까? – xSea

+0

dataadapter를 사용하여 데이터 테이블에 데이터를 채우는 경우 행별로 데이터를 문자열 형식으로 가져 오는 것이 매우 쉽다고 생각합니다. –

답변

2

를 해결하는 데 도움을 주시기 바랍니다 :

StringBuilder strBuilder= new StringBuilder(); 
while (sqr.Read()) 
{ 
    strBuilder.AppendFormat("PostID : {0}{1}",sqr["PostID"].ToString(),Environment.NewLine); 
    strBuilder.AppendFormat("dateposted : {0}{1}",sqr["dateposted"].ToString(),Environment.NewLine); 
    // And so on Build your string 
} 

가 마지막으로 strBuilder.ToString() 당신에게 필요한 문자열을 제공 할 것입니다. 그러나 더 똑똑한 방법은 필요한 속성을 가진 클래스 만들기 및 출력을 표시하기위한 재정의 된 .ToString 메서드입니다.

AodIdealToString() 메서드로 재정의하는 클래스로 지정하십시오. 그리고 나 다음처럼 정의하자

public class AodIdeal 
{ 
    public int PostID { get; set; } 
    public string dateposted { get; set; } 
    public string Source { get; set; } 
    // Rest of properties here 

    public override string ToString() 
    { 
     StringBuilder ObjectStringBuilder = new StringBuilder(); 
     ObjectStringBuilder.AppendFormat("PostID : {0}{1}", PostID, Environment.NewLine); 
     ObjectStringBuilder.AppendFormat("dateposted : {0}{1}",dateposted, Environment.NewLine); 
     ObjectStringBuilder.AppendFormat("Source : {0}{1}", Source, Environment.NewLine); 

     // and so on 
     return ObjectStringBuilder.ToString(); 
    } 
} 

이 그럼 당신은 (그것을 objAodIdeal하자) 클래스의 객체를 생성하고, 대신 지역 변수에 대한 속성을 사용할 수있다. 그리고 마지막으로 objAodIdeal.ToString()은 필요한 출력을 줄 것입니다.

사용 예제

AodIdeal objAodIdeal= new AodIdeal(); 
while (sqr.Read()) 
{ 
    objAodIdeal.PostID = int.Parse(sqr["PostID"].ToString()); 
    objAodIdeal.dateposted= sqr["dateposted"].ToString(); 
    // assign rest of properties 
} 
string requiredString= objAodIdeal.ToString();