如何将行添加到链接到另一个 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
类型。
我有具有这种结构的 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
类型。