我知道已经有10亿次了,但没有一个解决方案对我有帮助。 我想使用OleDB在C#中插入数据。我尝试了mln解决方案,但这里应该是最简单的解决方案,但它没有:
SQLCONNECTION = @"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\dbScenariusz.mdb";
using (OleDbConnection connection = new OleDbConnection(SQLCONNECTION))
{
string sql = "INSERT INTO Table (content) VALUES('lala')";
connection.Open();
OleDbCommand command = new OleDbCommand(sql, connection);
command.ExecuteNonQuery();
connection.Close();
}
SQLCONNECTION没问题。它适用于SELECT查询。
string sql - 我在Access中尝试了这个查询,它运行正常。
我没有错误。它只是没有向数据库插入任何内容。 当我在Access(同一个数据库)中运行查询时,将插入行。
奇怪的是 command.ExecuteNonQuery(); 返回1!这意味着1排受到了影响!
我真的不知道问题出在哪里,所以我真的很感激任何帮助。 抱歉我的英文。
更新:另一件奇怪的事情。我更改查询更新,它工作正常!真的wtf? :)
答案 0 :(得分:3)
您正在连接到DataDirectory。是否在构建后复制.mbd文件?换句话说,您是否在每次构建时重新部署数据库,从而丢失了插入内容?
快速测试可能使用相同的代码和相同的连接来执行>>插入后的。
答案 1 :(得分:2)
在解决方案资源管理器中,选中app.config
。双击app.config
,然后重新输入connectionString
。提供数据库的路径。
例如,在我的项目中,connectionString的默认位置是:
connectionString =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = | DataDirectory | \ App_Data \ database.accdb; Persist Security Info = True”
假设数据库存储在以下位置:
C:\ Documents and Settings \ Amuk \ My Documents \ Visual Studio 2010 \ Projects \ insertion \ insertion \ App_Data
因此,用
替换connectionStringconnectionString =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\ Documents and Settings \ Amuk \ My Documents \ Visual Studio 2010 \ Projects \ insertion \ insertion \ App_Data \ database.accdb; Persist Security Info =真“
您的问题将得到解决,我希望这肯定会对您有所帮助,我也遇到了同样的问题,并且通过用原始路径替换connectionString
,数据库正在存储所有记录。
答案 2 :(得分:0)
您可以尝试使用事务来提交更改。
command.Transaction = connection.BeginTransaction(); //after connection.open()
然后添加
command.Transaction.Commit(); //Before connection.close()