我在尝试更新SQL Server数据库中的值时遇到了一些问题。
我有以下DataGridView: 当我点击下面的保存按钮时,我想更改复选框并将布尔值写回SQL Server。
我使用设计器将BindingSource添加到SQL Server表中,这样可以很好地读取和显示来自SQL的值。
保存按钮包含以下代码:
但是当我点击保存在DGV中更改的值时,出现了以下错误:
我将其与正常工作的此列进行了比较。找不到区别:
我有以下DataGridView: 当我点击下面的保存按钮时,我想更改复选框并将布尔值写回SQL Server。
我使用设计器将BindingSource添加到SQL Server表中,这样可以很好地读取和显示来自SQL的值。
保存按钮包含以下代码:
private void cmdChange_Click(object sender, EventArgs e)
{
var PID = new SqlParameter("@PID",SqlDbType.Int);
var Programm = new SqlParameter("@Installed",SqlDbType.Int);
string prgUpdate = "UPDATE Programme SET Installed=@Installed WHERE PID=@PID";
using (SqlConnection update = new SqlConnection(altdbconnect))
{
update.Open();
for (int i = 0; i < dGVUpdates.Rows.Count; i++)
{
using (SqlCommand insert3 = new SqlCommand(prgUpdate, update))
{
insert3.Parameters.AddWithValue("@PID", dGVUpdates.Rows[i].Cells["pIDDataGridViewTextBoxColumn1"].Value);
insert3.Parameters.AddWithValue("@Installed", dGVUpdates.Rows[i].Cells["installedDataGridViewTextBoxColumn"].Value);
insert3.ExecuteNonQuery();
}
}
update.Close();
}
dGVUpdates.Update();
dGVUpdates.Refresh();
}
但是当我点击保存在DGV中更改的值时,出现了以下错误:
我将所有使用的语句与另一个附加信息:参数化查询'(@PID nvarchar(4000),@Installed nvarchar(4000))UPDATE Programme '期望提供未提供的参数“ @PID”。
DataGridView
进行了比较。它们看起来一样。
就像链接图片中显示的那样,有一个参数@PID
设置。
pIDDataGridViewTextBoxColumn1
列是由设计师生成的。这是PID
的列。我将其与正常工作的此列进行了比较。找不到区别:
var kdNummer = new SqlParameter("@Kundennummer", SqlDbType.Int);
var kdName = new SqlParameter("@Kundenname", SqlDbType.VarChar);
var kdMail = new SqlParameter("@Kundenmail", SqlDbType.VarChar);
var kdTele = new SqlParameter("@Telefon", SqlDbType.VarChar);
var kdOffen = new SqlParameter("@Offen", SqlDbType.Int);
string kdquery = "INSERT INTO gfcKunden VALUES (@Kundennummer, @Kundenname, @Kundenmail, @Telefon, @Offen)";
using (SqlConnection updatedb = new SqlConnection(altdbconnect))
{
updatedb.Open();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
try
{
using (SqlCommand insert = new SqlCommand(kdquery, updatedb))
{
insert.Parameters.AddWithValue("@Kundenname", dataGridView1.Rows[i].Cells["Kundenname"].Value);
insert.Parameters.AddWithValue("@Kundennummer", dataGridView1.Rows[i].Cells["Kundennummer"].Value);
insert.Parameters.AddWithValue("@Kundenmail", dataGridView1.Rows[i].Cells["Kundenmail"].Value);
insert.Parameters.AddWithValue("@Telefon", dataGridView1.Rows[i].Cells["Telefon"].Value);
insert.Parameters.AddWithValue("@Offen", 0);
insert.ExecuteNonQuery();
}
}
catch { }
}
updatedb.Close();
}
SQL Server表的截图:
dGVUpdates.Rows[i].Cells["pIDDataGridViewTextBoxColumn1"].Value
是空的? - SᴇM