在c#中保存信息时出错

时间:2012-04-17 07:09:46

标签: c# sql ado.net

我需要将所有这些值保存在数据库中。我的表包含这些字段ID(Id是自动生成),密码,名称,Department_Name,Email_Address。 此代码生成错误。这是我的代码 -

OleDbCommand cmd = new OleDbCommand();
 cmd.CommandType = CommandType.Text;
 cmd.CommandText = @"INSERT INTO  Login(Password,Name,Department_Name,Email_Address)
                     Values(@Password,@Name,@Department_Name,@Email_Address)";
 cmd.Parameters.AddWithValue("@Password",passwordBox1.Password);
 cmd.Parameters.AddWithValue("@Name", textBox2.Text);
 cmd.Parameters.AddWithValue("@Department_Name", textBox3.Text);
 cmd.Parameters.AddWithValue("@Emial_Address", textBox4.Text);
 cmd.Connection = con;
 con.Open();
 cmd.ExecuteNonQuery();
 con.Close();   

错误是 -

INSERT INTO语句中的语法错误。

5 个答案:

答案 0 :(得分:3)

这不太可能是问题,但值得尝试:@Email_Address在设置参数值时拼写为@Emial_Address。

问题可能是登录名和密码可以是数据库中的保留字。尝试更改:

`cmd.CommandText = "INSERT INTO  Login (Password,Name,Department_Name,Email_Address) Values (@Password,@Name,@Department_Name,@Email_Address)";`

要 -

`cmd.CommandText = "INSERT INTO  [Login] ([Password],Name,Department_Name,Email_Address) Values (@Password,@Name,@Department_Name,@Email_Address)";`

答案 1 :(得分:2)

尝试

"INSERT INTO [Login] ...."

登录是一个SQL关键字,所以用方括号包围它应该可以。

Reniuz也发表了他的评论 - Email_Address参数拼写错误(但这不会导致错误)。

答案 2 :(得分:1)

如果您发布了正在使用的确切代码,则在添加电子邮件地址时参数名称拼写错误:

cmd.Parameters.AddWithValue("@Emial_Address", textBox4.Text);

另外,正如其他海报所指出的那样,您在查询中使用SQL保留关键字,登录,并且需要用方括号括起来:

"INSERT INTO [Login] (..."

答案 3 :(得分:0)

您对命令文本

尝试此查询
cmd.CommandText = "INSERT INTO  Login(Password,Name,Department_Name,Email_Address)
                     Values('" + passwordBox1.Password + "', '" + textBox2.Text + "', '" +textBox3.Text+ "','"+textBox4.Text+"')";

答案 4 :(得分:-1)

试试这个:

   OleDbCommand cmd = new OleDbCommand();
    cmd.CommandType = CommandType.Text;  
    cmd.CommandText = "INSERT INTO  Login(Password,Name,Department_Name,Email_Address)  Values('"+passwordBox1.Password+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"')";  
         con.Open();
      cmd.Connection=con;
        cmd.ExecuteNonQuery(); 
        con.Close();   

也将命令引用到连接,它不知道它正在执行哪个连接。