如何将数据库值分配给数组。我试过这样......
da = new SqlDataAdapter("select emname from emp", con);
ds = new DataSet();
da.Fill(ds, "emp");
if(ds.Tables [0].Rows.Count >0)
{
for(int i=0;i<ds.Tables [0].Rows .Count ;i++)
{
string[] myArray = ds.Tables[0].Rows[i]["emname"].ToString();
}
}
但它给出了无法将字符串转换为字符串[]的错误 请帮帮我
答案 0 :(得分:5)
试试这个:
da = new SqlDataAdapter("select emname from emp", con);
ds = new DataSet();
da.Fill(ds, "emp");
if(ds.Tables[0].Rows.Count > 0)
{
string[] myArray = new string[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
myArray[i] = ds.Tables[0].Rows[i]["emname"].ToString();
}
// Use myArray here...
}
请注意,使用LINQ有更简洁的方法,但如果您对C#/ .NET不熟悉,我建议您在深入了解LINQ之前熟悉基础知识。
答案 1 :(得分:0)
您正在尝试在每个循环中对新数组进行初始化,并且最重要的是您还尝试将其指定为字符串而不是数组。
string [] [] myArray = ds.Tables [0] .Rows是正确的解决方案。另请注意,行是一个多维数组。如果你想要一个填充了特定行的数组,你也可以使用例如string [] myArray = dt.Tables [0] .Rows [0]。
答案 2 :(得分:0)
如果你想要一个包含所有名字的数组,你可以将DataRow
数组转换为string
数组,如下所示:
da = new SqlDataAdapter("select emname from emp", con);
ds = new DataSet();
da.Fill(ds, "emp");
string[] myArray = Array.ConvertAll<DataRow, string>(ds.Tables[0].Select(),
delegate(DataRow row) { return row["emname"].ToString(); });