C# 用户代码未处理OLEDBEException-未指定错误
当我的程序运行时,以下错误会随机出现。 这是很新的,所以我不知道如何去捕捉这个。。。 做了一个快速搜索,但似乎没有任何帮助 以下是我的代码的一部分:C# 用户代码未处理OLEDBEException-未指定错误,c#,ms-access,ado.net,C#,Ms Access,Ado.net,当我的程序运行时,以下错误会随机出现。 这是很新的,所以我不知道如何去捕捉这个。。。 做了一个快速搜索,但似乎没有任何帮助 以下是我的代码的一部分: protected DBBase(string tableName, string primary_key) { string s = Application.StartupPath + "\\alliancedb.accdb"; conn = new OleDbConnection(String.Format("Provider=
protected DBBase(string tableName, string primary_key)
{
string s = Application.StartupPath + "\\alliancedb.accdb";
conn = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}", s));
if (conn.State == ConnectionState.Closed)
{
conn.Open();
dataset = new DataSet();
//query statement
string sqlStatement = String.Format("Select * from {0} order by {1} ASC", tableName, primary_key);
//run sql
DBadpt = new OleDbDataAdapter(sqlStatement, conn);
oOrderDetailsCmdBuilder = new OleDbCommandBuilder(DBadpt);
DBadpt.Fill(dataset);
dbTab = dataset.Tables[0];
dbTab.TableName = this.tableName = tableName;
rows = dbTab.Rows;
}
else if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Open();
dataset = new DataSet();
//query statement
string sqlStatement = String.Format("Select * from {0} order by {1} ASC", tableName, primary_key);
//run sql
DBadpt = new OleDbDataAdapter(sqlStatement, conn);
oOrderDetailsCmdBuilder = new OleDbCommandBuilder(DBadpt);
DBadpt.Fill(dataset);
dbTab = dataset.Tables[0];
dbTab.TableName = this.tableName = tableName;
rows = dbTab.Rows;
}
}
不要让你的连接处于打开状态。始终打开它们,获取数据,然后立即关闭它们。使用块的
通常是为您关闭对象的最干净的方法
此外,如果您的任何表或字段是关键字或其中有空格,则必须将它们放在[括号]中:
using (OleDbConnection conn = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}", s))) {
conn.Open();
string sqlStatement = String.Format("Select * from [{0}] order by [{1}] ASC", tableName, primary_key);
// etc..
}
不要让你的连接处于打开状态。始终打开它们,获取数据,然后立即关闭它们。使用
块的通常是为您关闭对象的最干净的方法
此外,如果您的任何表或字段是关键字或其中有空格,则必须将它们放在[括号]中:
using (OleDbConnection conn = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}", s))) {
conn.Open();
string sqlStatement = String.Format("Select * from [{0}] order by [{1}] ASC", tableName, primary_key);
// etc..
}