Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将链接到其他表的行添加到MS Access表中?_C#_Database_Ms Access_Oledb_Oledbcommand - Fatal编程技术网

C# 如何将链接到其他表的行添加到MS Access表中?

C# 如何将链接到其他表的行添加到MS Access表中?,c#,database,ms-access,oledb,oledbcommand,C#,Database,Ms Access,Oledb,Oledbcommand,我有MS Access数据库,我必须使用Access和这个结构名称来回答这个问题: 我的程序允许向每个表中添加行。要使用数据库,我使用OleDbDataAdapter。此代码成功地将行添加到desease: connection.Open(); OleDbCommand command = new OleDbCommand("INSERT INTO " + "desease (title, description) VALUES (?, ?)", connection); comman

我有MS Access数据库,我必须使用Access和这个结构名称来回答这个问题:

我的程序允许向每个表中添加行。要使用数据库,我使用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();
但我也需要做同样的访问表。好吧,我试试这个:

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();
和get error:插入到指令中的语法错误

那么什么是访问的正确命令呢?我必须向参数发送哪些数据类型?尤其是身份证。在数据库中,他们有数字类型,在翻译中称之为。就诊日期也是日期类型


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

如果您的列名包含多个单词,则需要将它们放在方括号中,如[患者ID]、[医生ID]、[疾病ID]和[就诊日期]

作为最佳实践,将他们的名字改为一个单词

还可以使用自动处理连接和命令,而不是手动调用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类型。

太简单了。非常感谢。伟大的现在我可以用正确的方法来做了。再次感谢。