首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OleDB插入命令错误

OleDB插入命令错误
EN

Stack Overflow用户
提问于 2013-02-12 17:06:28
回答 4查看 10.1K关注 0票数 8
代码语言:javascript
复制
OleDbConnection con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb; Persist Security Info=False");

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";
                cmd.Parameters.AddWithValue("@Username", textBox1.Text);
                cmd.Parameters.AddWithValue("@Password", textBox2.Text);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                textBox1.Text = ex.ToString();
            }

我总是会遇到这样的错误,

代码语言:javascript
复制
System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   at VirginiTEAcorp.Form3.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-12 17:10:08

您定义了@Username@Password参数,但从未在sql命令中使用过。

怎么样?

代码语言:javascript
复制
cmd.CommandText = "INSERT INTO Accountstbl (Username, [Password]) VALUES (@Username, @Password)";
cmd.Parameters.AddWithValue("@Username", textBox1.Text);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();

此外,您应该在sql命令中使用Password,如[Password],因为它是MS Access中的。

如果您不这样做,这可能会导致错误,如;

密码关键字“

附近的语法不正确

票数 9
EN

Stack Overflow用户

发布于 2013-02-12 17:09:07

试着改变这种方式

代码语言:javascript
复制
 cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@Username,@Password)";
票数 1
EN

Stack Overflow用户

发布于 2013-02-12 17:09:17

insert语句中需要一个空格:

代码语言:javascript
复制
ssword)" + "VALUES ('" 

例如,在您的语句中,您进行了连接,而不允许使用空格。

应该是:

代码语言:javascript
复制
ssword)" + " VALUES ('" 

例如。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14828935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档