- 我在Windows窗体中工作,并尝试使用OLEDB连接到访问
.accdb
文件 - 我可以毫无问题地选择数据
- 我可以毫无错误地执行
Insert
和Create
命令 - 但是当我之后检查数据库时,数据并没有显示出来
例如,当我创建一个新表时,代码会说表已经创建,如果我尝试在不关闭Windows窗体的情况下再次创建表,它会抛出一个错误,说表已经存在,但如果我关闭并重新启动程序,它会让我再次创建表。
此外,如果我查看Access文件,我不会看到该表。我已经在Access打开和关闭的情况下尝试了多次测试。连接字符串是正确的,因为我对Access文件中的表进行了更改,并且这些更改反映在我发送的SELECT
查询中。
我怀疑Access中一定有一个设置,我必须启用它才能自动提交更改。但我没有找到。
OleDbConnection conn = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source =Database2.accdb");
string query = "INSERT INTO [TestTable] ([Test_Name], [Test_Number]) VALUES (?, ?)";
try
{
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.AddWithValue("Test_Name", list_all_meters[0][0].Name);
cmd.Parameters.AddWithValue("Test_Number", list_all_meters[0][0].Value);
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("An Item has been successfully added", "Caption", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
}catch(Exception ex)
{
Debug.WriteLine(ex.Message);
}
看起来问题是我设置了数据库"复制到输出目录";改为"始终复制",这会在每次运行程序时覆盖我的更改。如果Newer修复了问题,则将其更改为Copy。