【发布时间】:2019-04-13 17:54:17
【问题描述】:
我正在尝试将数据插入到名为 ansat (vagtplan) 的表中。我目前正在编写一个使用 SQL Server 数据库的 WinForms 应用程序,但我仍然收到错误,并且我无法在代码中真正看到错误所在。
我认为,这一定是 SQL 查询的错误,因为当我尝试按下按钮向表中插入数据时,我收到以下错误消息:
“ansatID、Navn、Efternavn、Adresse、Email、Mobilnr”附近的语法不正确。
所需的结果是带有“已保存”的消息框,它将确认数据已插入到表 ansat(vagtplan) 中。查询了很多次,但我并不能真正看到错误在哪里,所以我的问题是:错误在哪里?也许应该以另一种方式制定查询?代码如下:
private void button1_Click(object sender, EventArgs e)
{
try
{
String ConnectionString = @"Data Source=.\SQLEXPRESS01;Initial Catalog=Vagtplan;Integrated Security=True";
SqlConnection myconnection = new SqlConnection(ConnectionString);
myconnection.Open();
SqlCommand AddCommand = myconnection.CreateCommand();
AddCommand.CommandText = "INSERT INTO ansat(vagtplan) ([ansatID, Navn, Efternavn, Adresse, Email, Mobilnr]) VALUES (@ansatID, @Navn, @Efternavn, @Adresse, @Email, @Mobilnr)";
AddCommand.Parameters.AddWithValue("@ansatID", textBox8.Text);
AddCommand.Parameters.AddWithValue("@Navn", textBox1.Text);
AddCommand.Parameters.AddWithValue("@Efternavn", textBox2.Text);
AddCommand.Parameters.AddWithValue("@Adresse", textBox3.Text);
AddCommand.Parameters.AddWithValue("@Email", textBox6.Text);
AddCommand.Parameters.AddWithValue("@Mobilnr", textBox7.Text);
AddCommand.ExecuteNonQuery();
myconnection.Close();
MessageBox.Show("Saved");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
【问题讨论】:
-
表名后不需要指定数据库名。 (vagtplan) 而且您不要在列列表的开头和和处放置方括号。如果您想使用它们,请将它们放在每个列名称周围 [ansatID], [Navn],...
-
您还应该处理连接(以及 DBCommand 对象)并避免使用
AddWithValue() -
[ansatID, Navn, Efternavn, Adresse, Email, Mobilnr]表示名称为ansatID, Navn, Efternavn, Adresse, Email, Mobilnr的单个 列;我怀疑这就是你所追求的。您引用个别列,[ansatID], [Navn],... -
老实说,也不确定
INSERT INTO ansat(vagtplan) ([ansatID,...是什么。vagtplan是另一个专栏吗?如果是这样,它应该与其他列在同一个括号中。 -
@Larnu ansatID, Navn, Efternavn, Adresse, Email, Mobilnr 是每个单独的列,vagtplan 是数据库的名称,ansat 是表的名称,所以它被称为 ansat( vagtplan)
标签: c# sql sql-server winforms insert