2016-06-20 4 views
0

while()ループの後に、1行目のレコードを取得して文字列として文字列として返すには、<< >>が必要です。 ある行に多数の列がありますが、文字列stとして宣言するのに問題がありますか?通常string st = new string()ようにそれを修正するためにSQLデータベースからデータを取得し、文字列として返す

ありがとうございますが、下記のように、この目的のためのStringBuilderを使用することができます

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と非常に混同しています。また、多くの方法がありますので、お勧めはありますか?どのように私はすべての列を取得し、文字列として戻る? – 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メソッドです。

AodIdealは、ToString()メソッドをオーバーライドしたクラスとします。そして、私は次のようにそれを定義してみましょう:

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(); 
関連する問題