[英]How to store values got from datatable into a string?
I want to get Data table values and save them in a single string, where dt.rows.Count
is more that 0. 我想获取数据表值并将它们保存在单个字符串中,其中
dt.rows.Count
0。 I want get
menu_name
, menu_Quantity
and store them into a single string where email=ariffnaj@gmail.com
. 我想要得到
menu_name
, menu_Quantity
并将它们存储到单个字符串中,其中email=ariffnaj@gmail.com
。 If this is possible, can you show how to do it, this code only save into string at first column only 如果可能的话,您能演示如何执行此操作,此代码仅保存到字符串的第一列中
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();
}
}
My solution uses a SqlDataReader
instead of SqlDataAdapter
and DataTable
. 我的解决方案使用
SqlDataReader
而不是SqlDataAdapter
和DataTable
。 This is easier, if you only want to retrieve some values. 如果您只想检索一些值,这会更容易。 To build the string I use a
StringBuilder
, as it manages the resources better than string concatenation would. 为了构建字符串,我使用
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();
}
}
Note that the using-statements automatically close the connection and release the resources. 请注意,使用语句会自动关闭连接并释放资源。
You can try coalesce function: 您可以尝试合并功能:
DECLARE @str nvarchar(MAX)
SELECT @str = (COALESCE(@str + ';', '') + CONCAT('Menu:', menu_name, ', Quantity:', menu_quantity))
FROM cart WHERE email=@email
SELECT @str as output
And then use: String str = cmd1.ExecuteScalar().ToString();
然后使用:
String str = cmd1.ExecuteScalar().ToString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.