尝试将数据插入多个表时出错[C#Winform SQL Server]

时间:2016-06-11 19:52:32

标签: c# sql-server winforms

尝试在多个表中插入数据时出现以下错误。

  

关键字“用户”附近的语法不正确

按钮点击代码:

 private void buttonSave_Click(object sender, EventArgs e) {
   SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SampleTest1.Properties.Settings.SampleTestDBConnectionString"].ConnectionString);
   SqlCommand cmd = conn.CreateCommand();
   try {
    UserId = UserId + 1;

    cmd.CommandText = "INSERT INTO [User](User_Id,Name,Gender,Is_Active,Created_Date,Activated_Date) values(@userid,@name,@gender,@isactive,@createdate,@activedate)";
    conn.Open();
    cmd.Parameters.AddWithValue("@userid", SqlDbType.Int).Value = UserId;
    cmd.Parameters.AddWithValue("@name", SqlDbType.VarChar).Value = textBoxName.Text;
    cmd.Parameters.AddWithValue("@gender", SqlDbType.VarChar).Value = textBoxGender.Text;
    cmd.Parameters.AddWithValue("@isactive", SqlDbType.Bit).Value = "True";
    cmd.Parameters.AddWithValue("@createdate", SqlDbType.Date).Value = System.DateTime.Today;
    cmd.Parameters.AddWithValue("@activedate", SqlDbType.DateTime).Value = System.DateTime.Now;
    cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();

    cmd.CommandText = "INSERT INTO User_Details(User_Id,Mobile,Address,Job_Contract) values(@userid,@mobile,@address,@jobcontract)";
    cmd.Parameters.AddWithValue("@userid", SqlDbType.Int).Value = UserId;
    cmd.Parameters.AddWithValue("@mobile", SqlDbType.VarChar).Value = textBoxMobile.Text;
    cmd.Parameters.AddWithValue("@address", SqlDbType.VarChar).Value = textBoxAddress.Text;
    cmd.Parameters.AddWithValue("@jobcontract", SqlDbType.VarChar).Value = textBoxJobContract.Text;
    cmd.ExecuteNonQuery();
    conn.Close();
   }

我已将UserId值声明为

static int UserId = 100;

不确定出了什么问题。如果需要更多详细信息,请发表评论。

参考文献:

LINK 1:ASP.NET C#将数据插入多个表

LINK 2:一次插入两个表格。

LINK 3:在插入语句

中出现语法错误

LINK 4:在SQL Server中同时将数据插入两个表

2 个答案:

答案 0 :(得分:0)

用户是保留关键字,因此您需要使用它,如下所示

Insert into [User] (columns) values (@Values);

希望它有所帮助!

答案 1 :(得分:0)

好吧,它是我最终尝试解决这个问题的数据库设计逻辑。

  • 我在评论中使用了大多数建议的修改,dbo.[User]声明为[User][SampleTestDB].[dbo].[User]INSERT INTO
  • 尝试使用using语句并将AddWithValue更改为Add
  • 尝试使用事务查询插入[User]表,然后插入[User_Details]表。
  • 当然,我尝试清理并重建解决方案,因为我同时使用多个实例和Visual Studio版本。

<强> ISSUE:

我将User_Id表格中的[User]宣称为PrimaryNOT NULLUnique[User_Details]表格中PrimaryNOT NULL并使用自动增量索引。

在按钮单击代码中,我只使用static int[User]表的INSERT语句冲突,因为它包含Unique属性。

<强> SOLUTION:

通过删除并重新创建[User]表格来解决问题,User_Id表格与[User_Details]表格相同。 (已删除Unique表格中的[User]约束