syntax error while inserting data into ms access table

不羁的心 提交于 2019-12-02 21:29:18

问题


I have a following code:

OleDbConnection aConnection = new
                    OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;
                                 Data Source=storage_db.accdb");
string sql = "INSERT INTO Client cname,phone,password)
                           VALUES('"+textBox1.Text+"','"+textBox2.Text+"',
                                  '"+textBox3.Text+"')";
aConnection.Open();
OleDbCommand insert = new OleDbCommand(sql, aConnection);
insert.ExecuteNonQuery();
aConnection.Close();

But when I try to insert data I am getting an exception syntax error in insert query. What am I doing wrong?


回答1:


Password is a reserved word in Access so you need to wrap the password column in square brackets in your query. You also need to wrap the columns you're inserting data into in parentheses:

INSERT INTO (Client cname,phone,[password]) VALUES(...

As @HarveySpecter points out in the comments you should also use a parameterized query rather than concatenating user input otherwise you're opening yourself up to SQL injection attacks.




回答2:


Your insert syntax is incorrect... you need to () around both the fields you are inserting AND the values clause...

insert into Client
   ( cname, phone, [password] )
   values
   ( ?, ?, ? )

The "?" are place-holders for the parameters and the parameter statements must be in the same order as the "?" represent. Also, note... if the values are expected to be numeric, date, etc, make sure the values you are setting in the parameter are the correct data type too. But in your case, these are all string-based.

OleDbCommand insert = new OleDbCommand(sql, aConnection);
insert.Parameters.Add( "parmName", textBox1.Text );
insert.Parameters.Add( "parmPhone", textBox2.Text );
insert.Parameters.Add( "parmPwd", textBox3.Text );



回答3:


Try this:

string sql = "INSERT INTO Client (cname, phone, [password])
VALUES('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')";

You forget parentheses. But better use parameter queries.



来源:https://stackoverflow.com/questions/30370397/syntax-error-while-inserting-data-into-ms-access-table

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!