繁体   English   中英

如何将从数据表中获取的值存储到字符串中?

[英]How to store values got from datatable into a string?

我想获取数据表值并将它们保存在单个字符串中,其中dt.rows.Count 0。 在此处输入图片说明 我想要得到menu_namemenu_Quantity并将它们存储到单个字符串中,其中email=ariffnaj@gmail.com 如果可能的话,您能演示如何执行此操作,此代码仅保存到字符串的第一列中

SqlConnection conn = new SqlConnection(ConfigurationManager.
                    ConnectionStrings["connectionString"].ConnectionString);
 string cartsql = "SELECT menu_name,menu_price,menu_quantity FROM cart where email=@email";
        SqlCommand cmd1 = new SqlCommand(cartsql, conn);
        cmd1.Parameters.AddWithValue("@email", Session["email"].ToString());
        SqlDataAdapter sda = new SqlDataAdapter(cmd1);
        DataTable dt = new DataTable();
        sda.Fill(dt);

        if (dt.Rows.Count > 0)
        {

            foreach (DataRow dtRow in dt.Rows)
            {
                string menuname = dtRow["menu_name"].ToString();
                string menuprice = dtRow["menu_price"].ToString();
                string menuquantity = dtRow["menu_quantity"].ToString();

            }

        }

我的解决方案使用SqlDataReader而不是SqlDataAdapterDataTable 如果您只想检索一些值,这会更容易。 为了构建字符串,我使用StringBuilder ,因为它比字符串连接更好地管理资源。

public string GetCartStringForEMail(string email)
{
    const string sql = "SELECT menu_name, menu_quantity FROM cart WHERE email=@email";

    string connectionString =
        ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
    using (var conn = new SqlConnection(connectionString))
    using (var cmd = new SqlCommand(sql, conn)) {
        var sb = new StringBuilder();
        cmd.Parameters.AddWithValue("@email", email);
        conn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read()) {
            sb.Append(reader.GetString(0))
                .Append(", ")
                .AppendLine(reader.GetInt32(1).ToString());
        }
        return sb.ToString();
    }
}

请注意,使用语句会自动关闭连接并释放资源。

您可以尝试合并功能:

DECLARE @str nvarchar(MAX)
SELECT @str = (COALESCE(@str + ';', '') + CONCAT('Menu:', menu_name, ', Quantity:', menu_quantity)) 
FROM cart WHERE email=@email
SELECT @str as output

然后使用: String str = cmd1.ExecuteScalar().ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM