向数组中添加数据库列
本文关键字:数据库 添加 数组 | 更新日期: 2023-09-27 18:21:45
我正试图从数据库中检索字符串,并将其记录到visualstudio中的列表框中。这是我当前的代码,但由于某种原因,它返回了列名,而不是应该使用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替换dr.fieldcount。如果我尝试了上面的任何一个,RowCount仍然没有。我得到错误当没有数据时无效的读取尝试
如果它有任何作用,这就是我填充数据库的方式
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)
{
}
这是一个不同形式的
我相信您应该能够通过更改来获得字段的值
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);
由于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();
}