如何将行添加到链接到另一个 table 的 MS Access table?

How to add row to MS Access table which linked to another tables?

我有具有这种结构的 MS Access 数据库(我必须使用 Access)(这个问题几乎没有翻译名称):

我的程序允许向每个 table 添加行。要使用数据库,我使用 OleDbDataAdapter。此代码成功将行添加到 "desease":

connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO " 
    + "desease (title, description) VALUES (?, ?)", connection);
command.Parameters.AddWithValue("title", "input text");
command.Parameters.AddWithValue("description", "input text");
adapter.InsertCommand = command;
adapter.InsertCommand.ExecuteNonQuery();
connection.Close();

但我也需要对 "visits" table 做同样的事情。好吧,我试试这个:

connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO Посещения " + 
    "(patient ID, doctor ID, desease ID, visit date) " + 
    "VALUES (?, ?, ?, ?)", connection);
command.Parameters.AddWithValue("patient ID", "1");
command.Parameters.AddWithValue("doctor ID", "1");
command.Parameters.AddWithValue("desease ID", "1");
command.Parameters.AddWithValue("visit date", "01.05.1999");
adapter.InsertCommand = command;
adapter.InsertCommand.ExecuteNonQuery();
connection.Close();

并得到错误:syntax error in instruction INSERT INTO

那么 "visits" 的正确命令是什么?我必须向参数发送哪些数据类型?特别是对于 ID。在数据库中,它们具有数字类型(在翻译中是这样称呼的)。 Visit date 也有 date 类型

我找不到任何关于此的信息。

如果您的列名称包含多个单词,您需要将它们放在方括号中,例如 [patient ID][doctor ID][desease ID][visit date]

作为最佳做法,将他们的名字更改为一个词。

还可以使用 using statement 自动处理您的连接和命令,而不是手动调用 Close 方法。

using(var connection = new OleDbConnection(conString))
using(var command = connection.CreateCommand())
{
    commmand.CommandText = @"INSERT INTO Посещения([patient ID],[doctor ID], [desease ID], [visit date])
                             VALUES(?, ?, ?, ?)";
    command.Parameters.AddWithValue("patient ID", "1");
    command.Parameters.AddWithValue("doctor ID", "1");
    command.Parameters.AddWithValue("desease ID", "1");
    command.Parameters.AddWithValue("visit date", "01.05.1999");

    adapter.InsertCommand = command;
    connection.Open();
    adapter.InsertCommand.ExecuteNonQuery();
}

根据你的列名,我认为你的前 3 列应该是数字类型而不是字符,最后一列应该更好 DATETIME 类型。