-3

データベースがあり、MS ACCESS 2007 を使用しています。テキスト ボックスを使用してデータベースにデータを挿入したいと考えていました。以下にこのコードがありますが、エラーが発生しました。

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Sisc-stronghold\mis!\wilbert.beltran\DataBase\DataStructure.accdb");

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();
            }

ここにエラーがあります

System.Data.OleDb.OleDbException: INSERT INTO ステートメントの構文エラーです。System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr) で System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS dbParams、Object& executeResult) で System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) で System.Data. OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 動作、Object& executeResult) で System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 動作、文字列メソッド) で System.Data.OleDb.OleDbCommand.ExecuteNonQuery() で VirginiTEAcorp.Form3.button1_Click(オブジェクト送信者) , EventArgs e) in C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34

4

2 に答える 2

1

多分あなたはこのコードを試すことができます

 private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            cmd = new OleDbCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO userinfo (FirstName, LastName, Age, Address, Course)" + "VALUES (@First_Name, @Last_Name, @Age, @Address, @Course)";
            cmd.Parameters.AddWithValue("@First_Name", textBox1.Text);
            cmd.Parameters.AddWithValue("@Last_Name", textBox2.Text);
            cmd.Parameters.AddWithValue("@Age", textBox3.Text);
            cmd.Parameters.AddWithValue("@Address", textBox5.Text);
            cmd.Parameters.AddWithValue("@Course", textBox5.Text);
            cmd.Connection = conn;
            conn.Open();
            clear();
            cmd.ExecuteNonQuery();
            {
                MessageBox.Show("Data Added!");
                conn.Close();
            }
            dataholder();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

パラメータを宣言する場合。ある意味でそれらを使用する必要があるかもしれません。それが役に立てば幸い :)

于 2013-02-28T01:36:59.390 に答える
1

You have declared parameters but not used them,If you are using following statement then there is no need to use parameters

cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";

But if you want to use parameters then you neeed to change commandtext as follow...

cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@UserName,@Password)";
于 2013-02-27T07:00:14.827 に答える