1

現在、C# を使用してアクセス データベース (mdb として保存) にデータを追加しようとしていますが、現在のコードは次のとおりです。

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private OleDbConnection bookConn;
        private OleDbCommand oleDbCmd = new OleDbCommand();
        private String connParam = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Alex\Desktop\Project\example.mdb;Persist Security Info=False";


        public Form1()
        {
            bookConn = new OleDbConnection(connParam);
            InitializeComponent();
        }

        public void add()
        {
            try
            {
                bookConn.Open();
                oleDbCmd.Connection = bookConn;
                oleDbCmd.CommandText = "INSERT INTO Student (StudentID, Module) VALUES ('"+ this.textBox1.Text +"','"+ this.textBox2.Text +"');";
                oleDbCmd.CommandType = CommandType.Text;
                int temp = oleDbCmd.ExecuteNonQuery();
                if (temp > 0)
                {
                    MessageBox.Show("Added");
                }
                else
                {
                    MessageBox.Show("Failed");
                }
                bookConn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            add();
        }


    }
}

このコードを実行すると、次のエラー メッセージが表示されます: INSERT INTO ステートメントの構文エラー。

正しく設定されているように見える他の例と比較すると、何が間違っているのかわかりません。

この問題を解決するための助けをいただければ幸いです。

4

1 に答える 1

2

Module予約語です。可能/実用的であれば、フィールドの名前を変更します。それをフィールド名として保持する必要がある場合は、INSERTステートメントで角括弧で囲みます。

oleDbCmd.CommandText = "INSERT INTO Student (StudentID, [Module]) VALUES ('"+ this.textBox1.Text +"','"+ this.textBox2.Text +"');";
于 2013-04-15T16:50:29.443 に答える