我试图从数据库中检索字符串并将其记录到visual studio中的列表框中这是我当前的代码但由于某种原因它返回列名而不是shoud我使用dr.getvalues()或者其他东西是的如何使用它?...
cn.Open();
cmd.CommandText = "SELECT Code, Name, Price, Quantity FROM dbo.[Table]";
SqlDataReader dr = cmd.ExecuteReader();
var colna = new List<string>();
var colpr = new List<string>();
for (int i = 0; i < dr.FieldCount; i++)
{
dr.Read();
colna.Add(dr.GetName());
colpr.Add(dr.GetName(i));
}
string[] sna = colna.ToArray();
string[] spr = colpr.ToArray();
listBox2.Items.AddRange(sna);
listBox3.Items.AddRange(spr);
dr.Close();
cn.Close();
新问题它只读取了4行我尝试将tableDataGridView.RowCount转换为变量没有运气我尝试用tableDataGridView.RowCount替换dr.fieldcount仍然没有,如果我尝试以上任何一个我得到错误无效尝试读取时没有数据
如果它起任何作用,这就是我填满数据库的方式
try
{
cn.Open();
cmd.CommandText = "INSERT INTO [Table](Code, Name, Price, Quantity)VALUES('" + codeTextBox.Text + "','" + nameTextBox.Text + "','" + priceTextBox.Text + "','" + quantityTextBox.Text + "')";
cmd.ExecuteNonQuery();
cn.Close();
string col1 = codeTextBox.Text;
string col2 = nameTextBox.Text;
string col3 = priceTextBox.Text;
string col4 = quantityTextBox.Text;
string[] row = { col1, col2, col3, col4 };
tableDataGridView.Rows.Add(row);
}
catch (Exception bs)
{
}
这是另一种形式
答案 0 :(得分:0)
我相信你应该能够通过改变
来获得该领域的价值olpr.Add(dr.GetName(i));
到
olpr.Add(dr[i].ToString());
cn.Open();
cmd.CommandText = "SELECT Code, Name, Price, Quantity FROM dbo.[Table]";
SqlDataReader dr = cmd.ExecuteReader();
var colna = new List<string>();
var colpr = new List<string>();
dr.Read(); // this will only read one row
for (int i = 0; i < dr.FieldCount; i++)
{
colna.Add(dr.GetName());
colpr.Add(dr[i].ToString());
}
string[] sna = colna.ToArray();
string[] spr = colpr.ToArray();
listBox2.Items.AddRange(sna);
listBox3.Items.AddRange(spr);
答案 1 :(得分:0)
因为SqlDataReader的返回类型是一个对象。因此,您必须将值转换为所需类型。可以在C#中以多种不同的方式进行转换,如下所示:
SqlDataReader dr= command.ExecuteReader();
while (dr.HasRows)
{
while (dr.Read())
{
colna.Add(dr.GetString(1)) // name as string
colpr.Add(dr.GetInt32(2)) // price is integer
colpr.Add(Convert.ToDecimal(dr(2)))// if decimal
colpr.Add((float)(dr(2))// if Float
OR
colna.Add(dr["Name"].ToString());
colpr.Add((float)dr["Price"]);
....
}
reader.NextResult();
}