不使用 OLEDB 打开数据连接
本文关键字:数据 连接 OLEDB | 更新日期: 2023-09-27 18:34:44
我有这段代码,它以fidderent的形式正常工作。 但不知何故,在特定形式下它不起作用,我收到此错误(在第 connction.Open();
行中(Unspecified error
该代码假设将多行添加到表中。这是代码:
for (int i = 0; st1.Length > i; i++)
UpdateDataBase(st1[i]);
private void UpdateDataBase(char letter)
{
int serialPro = 0;
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=C:''Projects_2012''Project_Noam''Access''myProject.accdb";
try
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
string sql = "SELECT tblProInfo.proInfoSerialNum FROM tblProInfo ";
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
//get the last!
while (reader.Read())
serialPro = reader.GetInt32(0);
}
sql = "INSERT INTO tblOrderAA (orderAASerialPro, orderAACodon1) "
+ " values (?, ?)";
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
command.CommandType = CommandType.Text;
command.Parameters.AddWithValue("orderAASerialPro", serialPro);
command.Parameters.AddWithValue("orderAACodon1", letter);
command.ExecuteNonQuery();
}
}
}
catch (Exception e)
{
MessageBox.Show("error in:" + e.Message);
}
}
我知道我可以使用MAX来获得最后一个。但它以不同的形式正确工作。所以我坚持要明白为什么!谢谢大家的帮助。
我最近遇到了类似的问题。尝试使用提升的权限打开和关闭连接来运行代码
如果我没记错,你没有关闭阅读器,所以尝试添加它
while (reader.Read())
serialPro = reader.GetInt32(0);
reader.Close();
编辑
说到做到(为了除去未来的袋子(
在某处将connection
作为静态的(例如在程序中.cs,如果你要做静态类会更好(,然后以这种方式调用它
if(Program.connection.State==System.Data.ConnectionState.Closed)
Program.connection.Open();