【发布时间】:2018-09-21 13:31:20
【问题描述】:
我尝试更新表单但出现错误:
必须声明标量变量“@isyeri”。
我的代码和 SQL Server 表代码如下。
using (OleDbConnection con = new OleDbConnection("Provider=sqloledb;SERVER=NEVZAT-PC;DATABASE=DENEME;User ID=sa;password=sapass;"))
using (OleDbCommand cmd = new OleDbCommand("update istakip set isyeri=@isyeri,isaciklama=@isaciklama,durum=@durum,personel=@personel,tarih=@tarih,baslamasaati=@baslamasaati,netsure=@netsure,kullanilanmalzeme=@kullanilanmalzeme,isbolum=@isbolum,arizatanim=@arizatanim,isemrino=@isemrino,kadi=@kadi where id=@id)", con))
{
cmd.Parameters.AddWithValue("@isyeri", comboBox1.Text);
cmd.Parameters.AddWithValue("@isaciklama", textBox2.Text);
cmd.Parameters.AddWithValue("@durum", comboBox2.Text);
cmd.Parameters.AddWithValue("@personel", comboBox3.Text);
cmd.Parameters.AddWithValue("@tarih", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@baslamasaati", dateTimePicker2.Value.ToString());//veritabanında varchar türünde bu
cmd.Parameters.AddWithValue("@netsure", textBox3.Text);
cmd.Parameters.AddWithValue("@kullanilanmalzeme", textBox4.Text);
cmd.Parameters.AddWithValue("@isbolum", comboBox4.Text);
cmd.Parameters.AddWithValue("@arizatanim", comboBox5.Text);
cmd.Parameters.AddWithValue("@isemrino", textBox5.Text);
cmd.Parameters.AddWithValue("@kadi", label13.Text);
cmd.Parameters.AddWithValue("@id", dataGridView1.CurrentRow.Cells[0].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
和我的 SQL Server 表结构:
CREATE TABLE [dbo].[istakip]
(
[id] [numeric](5, 0) IDENTITY(1,1) NOT NULL,
[isyeri] [nvarchar](50) NULL,
[isaciklama] [varchar](max) NULL,
[durum] [nvarchar](50) NULL,
[personel] [nvarchar](50) NULL,
[tarih] [datetime] NULL,
[baslamasaati] [nvarchar](50) NULL,
[netsure] [nvarchar](50) NULL,
[kullanilanmalzeme] [varchar](max) NULL,
[isbolum] [nvarchar](100) NULL,
[arizatanim] [nvarchar](100) NULL,
[isemrino] [nvarchar](50) NULL,
[kadi] [nvarchar](50) NULL
)
【问题讨论】:
-
在公共网站上提供您的 sa 密码并不是最好的办法
-
iirc OleDbCommand 需要未命名的参数,因此请使用序号
?字符而不是 @names(或者如果您仅使用 MSSQL,请使用 System.Data.SqlClient) -
@AlexK.: 但如果你使用
@并且位置正确,它不应该也可以工作吗? -
我不这么认为,服务器看到 @isyeri 令牌并认为是一个未声明的变量,因为它没有在命令中被替换。
-
位置正确。您可以检查
标签: c# .net sql-server ado.net