Visual Studio C#数据网格视图到数据库
本文关键字:视图 数据库 网格 数据网 Studio 数据 Visual | 更新日期: 2023-09-27 18:05:57
我正试图将datagridview中的数据保存到数据库。我一直在拿
NullReferenceException:对象引用未设置为对象的实例
try
{
foreach (DataGridViewRow row in dataGridView2.Rows)
{
using ( conn = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO tbl_Students_Marks VALUES(@Student, @T1, @T2, @T3, @T4)", conn))
{
cmd.Parameters.AddWithValue("@Student", (row.Cells["Student Number"].Value).ToString());
cmd.Parameters.AddWithValue("@T1", row.Cells["Test 1"].Value);
cmd.Parameters.AddWithValue("@T2", row.Cells["Test 2"].Value);
cmd.Parameters.AddWithValue("@T3", row.Cells["Test 3"].Value);
cmd.Parameters.AddWithValue("@T4", row.Cells["Test 4"].Value);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
看起来您的行值为空。
尝试用以下代码替换您的第9行:
var studentNumber = row.Cells["Student Number"].Value
if (studentNumber == null || studentNumber is DBNull)
continue;
cmd.Parameters.AddWithValue("@Student", studentNumber.ToString());
hmmm尝试此代码
try
{
foreach (DataGridViewRow row in dataGridView2.Rows)
{
using ( conn = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand(constring))
{
cmd.Connection = con;
cmd.CommandText = "INSERT INTO tbl_Students_Marks VALUES(@Student, @T1, @T2, @T3, @T4)";
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@Student", (row.Cells["Student Number"].Value).ToString());
cmd.Parameters.AddWithValue("@T1", row.Cells["Test 1"].Value);
cmd.Parameters.AddWithValue("@T2", row.Cells["Test 2"].Value);
cmd.Parameters.AddWithValue("@T3", row.Cells["Test 3"].Value);
cmd.Parameters.AddWithValue("@T4", row.Cells["Test 4"].Value);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
我希望它能帮助你
您应该先从DataGridView
的底部删除空行。这就是为什么不能插入最后一行。如下(在DataGridView Properties
中将AllowUserToAddRows
设置为False
,或在填充DataGridView
方法中添加dataGridView2.AllowUserToAddRows = false;
(:
dataGridView2.DataSource = ds.Tables[0];
dataGridView2.AllowUserToAddRows = false;
然后将代码的其余部分转换为INSERT
。