6

良い一日。登録ページを作成し、情報をデータベースに保存しようとしています。Microsoft Access を使用してデータベースを作成しました。私は得る:

INSERT INTO ステートメントの構文エラー

「登録」ボタンを押すたびに。私はすでに同様の問題をネットで検索してみました. 私はそれらをしましたが、それでもエラーが発生します。何か不足していますか?

コードは次のとおりです。

public void InsertRecord()
{
    OleDbCommand cmd = new OleDbCommand("INSERT INTO ElemData(StudentID, [Password], [Name], Age, Birthday, Address, FatherName, MotherName, " +
    "GuardianName, Class, Section, Email, PhoneNumber, MobileNumber) " + 
    "VALUES (@studentid, @password, @name, @age, @birth, @address, @father, @mother, @guardian, @classs, @section, @email, @phone, @mobile)", DBConnection.myCon);
    cmd.Parameters.Add("@studentid", OleDbType.VarChar).Value = Studentid;
    cmd.Parameters.Add("@password", OleDbType.VarChar).Value = Password;
    cmd.Parameters.Add("@name", OleDbType.VarChar).Value = Name;
    cmd.Parameters.Add("@age", OleDbType.VarChar).Value = Age;
    cmd.Parameters.Add("@birth", OleDbType.VarChar).Value = Birth;
    cmd.Parameters.Add("@address", OleDbType.VarChar).Value = Address;
    cmd.Parameters.Add("@father", OleDbType.VarChar).Value = Father;
    cmd.Parameters.Add("@mother", OleDbType.VarChar).Value = Mother;
    cmd.Parameters.Add("@guardian", OleDbType.VarChar).Value = Guardian;
    cmd.Parameters.Add("@classs", OleDbType.VarChar).Value = Classs;
    cmd.Parameters.Add("@section", OleDbType.VarChar).Value = Section;
    cmd.Parameters.Add("@email", OleDbType.VarChar).Value = Email;
    cmd.Parameters.Add("@phone", OleDbType.VarChar).Value = Phone;
    cmd.Parameters.Add("@mobile", OleDbType.VarChar).Value = Mobile;
    if (cmd.Connection.State == ConnectionState.Open)
    {
        cmd.Connection.Close();
    }
    DBConnection.myCon.Open();
    cmd.ExecuteNonQuery();
    DBConnection.myCon.Close();
}
4

2 に答える 2

8

ClassSectionはどちらも予約語です。予約語[Password]およびに対して行ったように、それらを角括弧で囲みます[Name]

このページには、Allen Browne のDatabase Issue Checker Utilityへのリンクが含まれています。Access が含まれているバージョンの Office を使用している場合は、そのユーティリティをダウンロードして、Access db ファイルで他の問題のあるオブジェクト名を調べることができます。

于 2013-08-14T04:10:27.690 に答える