0

我真的无法在我的数据库中添加任何数据,我可以读取数据库上的内容但无法写入,我尝试了很多代码但没有工作:(我最终得到了这段代码,

private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string user = textBox1.Text;
                string pass = textBox2.Text;

                string myExecutequery = "INSERT INTO Accountstbl (Username,Password) VALUES (@user,@pass)";
                OleDbCommand cmd = new OleDbCommand(myExecutequery, con);
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

错误说:

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 31

有人帮我请:(

4

2 回答 2

0
string myExecutequery = "INSERT INTO Accountstbl (Username,Password) VALUES 
(@user,@pass)";

con.Open();

try
{
 OleDbCommand cmd = new OleDbCommand(myExecutequery, con);
 cmd.Parameters.Add("@user", user);
 cmd.Parameters.Add("@pass", pass);     
 cmd.ExecuteNonQuery();
 cmd.Dispose();
 cmd = null;
}
catch(Exception ex)
{
  throw new Exception(ex.ToString(), ex);
}
finally
{
 con.Close();
}

或者

您的查询应该是这样的

string myExecutequery = "INSERT INTO Accountstbl (Username,Password) VALUES 
('"+ user +"','"+ pass +"')";

并且您需要在添加到oleDBCommand之前打开连接,例如

con.Open();
于 2013-02-05T04:49:16.163 回答
0

试试看。

       string SqlString = "Insert Into Accountstbl (Username, Password) Values (@user, @pass)";
        using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\test.accdb")) //Your Connection string
        {
            using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
            {
                string use = userTextBox.Text;
                string pass = passTextBox.Text;
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@use", use);
                cmd.Parameters.AddWithValue("@pass", pass);
                conn.Open();
                cmd.ExecuteNonQuery();
            }
        }

我知道这应该可行,但我测试了这段代码Microsoft Access 2012,我得到了这个错误:

Syntax error in INSERT INTO statement.

这将是MSAccess ADO Recordset.Update 上的 BUG:“INSERT INTO... 中的语法错误”的错误

于 2013-02-05T05:15:09.643 回答