我正在尝试将数据插入称为ansat(vagtplan)的表中。我目前正在编写一个使用SQL Server数据库的WinForms应用程序,但是仍然出现错误,并且在代码中看不到错误所在。
我认为SQL查询一定是错误的,因为当我尝试按按钮向表中插入数据时,会出现以下错误消息:
“ ansatID,Navn,Efternavn,Adresse,电子邮件,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);
}
}
答案 0 :(得分:1)
insert语句错误。应该是这样的:
INSERT INTO ansat(ansatID, Navn, Efternavn, Adresse, Email, Mobilnr)
VALUES(@ansatID, @Navn, @Efternavn, @Adresse, @Email, @Mobilnr)
无需将数据库指定为连接字符串中已提及的数据库。
答案 1 :(得分:1)
您可以尝试以下查询:
new AddReminderActivity().notifyInAdv(mReceivedID, intent);
答案 2 :(得分:0)
问题出在您的命令文本"INSERT INTO
ansat(vagtplan)
(
[ansatID, Navn, Efternavn, Adresse, Email, Mobilnr]
) values (@ansatID, @Navn, @Efternavn, @Adresse, @Email, @Mobilnr)";
< / p>
INSERT
语句语法为:Insert into <tableName>(<column1>,<column2>) Values(<column1Value>,<column2Value>);
INSERT
语句的表名似乎错误。看来ansat
是架构名称,vagtplan
是表名称,应该像ansat.vagtplan
或[ansat].[vagtplan]
[column1],[column2]
。您已将所有列添加到单个[]
中;那是错误的。答案 3 :(得分:0)
右键单击SQL Server Management Studio中的表,然后单击脚本,然后将INSERT插入脚本。这将为您提供一个用于插入表中的SQL插入脚本。您可以使用此脚本作为创建代码的基础。
答案 4 :(得分:0)
感谢所有答复:)我已经弄清楚了它现在可以使用,但是出现了另一个问题。现在,我试图通过外键将数据插入到彼此相关的两个表中。表dbo.Ansatte有一个主键,称为ansatID,表dbo.Login_data有一个主键,其名称为brugerID和外键AnsatID,它们引用表dbo.Ansatte中的主键ansatID。当查询运行时,两个表中的主键将以增量方式插入。我尝试将IDENTITY_INSERT设置为ON(在ms sql服务器管理工作室中),但是它没有帮助,因为我仍然收到IDENTITY_INSERT设置为OFF的错误消息。问题是,运行查询后,尽管外键AnsatID引用了表dbo.Ansatte中称为ansatID的主键,但表dbo.Login_data中的外键AnsatID仍然为NULL。期望的结果是表dbo.Login_data中的外键AnsatID与表dbo.Ansatte中的主键ansatID具有相同的值。这也显示在下面的图片中: enter image description here
那么,如何从主键转换为外键? 这是我的代码:
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 AddWorkerCommand = myconnection.CreateCommand();
AddWorkerCommand.CommandText = "INSERT INTO dbo.Ansatte ([Navn], [Efternavn], [Adresse], [Postnummer], [Bynavn], [Email], [Mobilnr]) VALUES ( @Navn, @Efternavn, @Adresse, @Postnummer, @Bynavn, @Email, @Mobilnr)";
AddWorkerCommand.Parameters.AddWithValue("@Navn", textBox1.Text);
AddWorkerCommand.Parameters.AddWithValue("@Efternavn", textBox2.Text);
AddWorkerCommand.Parameters.AddWithValue("@Adresse", textBox3.Text);
AddWorkerCommand.Parameters.AddWithValue("@Postnummer", textBox4.Text);
AddWorkerCommand.Parameters.AddWithValue("@Bynavn", textBox5.Text);
AddWorkerCommand.Parameters.AddWithValue("@Email", textBox6.Text);
AddWorkerCommand.Parameters.AddWithValue("@Mobilnr", textBox7.Text);
AddWorkerCommand.ExecuteNonQuery();
SqlCommand AddUserCommand = myconnection.CreateCommand();
AddUserCommand.CommandText = "INSERT INTO dbo.Login_data ([Brugernavn], [Adgangskode], [Brugertype]) VALUES ( @Brugernavn, @Adgangskode, @Brugertype)";
AddUserCommand.Parameters.AddWithValue("@Brugernavn", textBox10.Text);
AddUserCommand.Parameters.AddWithValue("@Adgangskode", textBox9.Text);
AddUserCommand.Parameters.AddWithValue("@Brugertype", textBox8.Text);
AddUserCommand.ExecuteNonQuery();
myconnection.Close();
MessageBox.Show("Saved");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}