0

私は本当にデータベースにデータを追加できません。DBにあるものを読み取ることはできますが、書き込むことはできません。多くのコードを試しましたが、機能しませんでした:(このコードになってしまいました。

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

誰かが私を助けてくれますpls:(

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 BUGのバグです:ADORecordset.Updateの「INSERTINTO...の構文エラー」

于 2013-02-05T05:15:09.643 に答える