从 SQL 数据库和 return 中获取数据作为字符串

Get data from SQL datebase and return as string

需要帮助以在 while() 循环后的 << >> 中获取第 1 行记录和 return 记录为字符串。 一行中有很多列,我无法将其声明为字符串 st?平时喜欢string st = new string()请帮忙改正

谢谢

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()
}

您可以为此目的使用 StringBuilder,如下所示:

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() 会给你所需的字符串。但更聪明的方法是创建一个具有必要属性的 Class 和一个用于显示输出的重写 .ToString 方法。

AodIdeal 为 class 并覆盖了 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();
    }
}

然后你可以创建一个 class 的对象(让它成为 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();