0

Access 2007 データベースの操作に問題があります。私のコードはこれです:

using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\User\\db.accdb;Jet OLEDB:Database Password=" + password + ";Persist Security Info=False"))
{
    connection.Open();
    string query = "INSERT INTO Book(Name, Author) VALUES('Hello', 'World')"; ;
    OleDbCommand cmd = new OleDbCommand(query, connection);
    cmd.ExecuteNonQuery();
    connection.Close();
}

そのデータベースのテーブルにレコードを書き込めないのはなぜですか? レコードのセルを表示するにはどうすればよいですか?

4

1 に答える 1

1

Nameは Access SQL の予約語であるため、その列名を角かっこ ( []) で囲む必要があります。代わりにこれを試してください:

string query = "INSERT INTO Book ([Name], Author) VALUES ('Hello', 'World')";

re: コメントを編集

これまでに提示された情報では、INSERT クエリが「操作は更新可能なクエリを使用する必要があります」で失敗する理由はわかりません。価値があるのは、次の C# コードが [Book] テーブルに行を正常に追加することです...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;

namespace oleDbTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string myConnectionString;
            myConnectionString =
                    @"Provider=Microsoft.ACE.OLEDB.12.0;" +
                    @"Data Source=C:\Users\Public\Database1.accdb;";

            using (var con = new OleDbConnection())
            {
                con.ConnectionString = myConnectionString;
                con.Open();

                using (var cmd = new OleDbCommand())
                {
                    cmd.Connection = con;
                    cmd.CommandType = System.Data.CommandType.Text;
                    cmd.CommandText =
                        @"INSERT INTO Book (Denomination, Author) VALUES ('Hello', 'World')";
                    cmd.ExecuteNonQuery();
                }
                con.Close();
            }
            Console.WriteLine("Done.");
        }
    }
}

...そのようです:

Denomination  Author
------------  ------
Hello         World 
于 2013-10-16T15:44:19.853 に答える