select ForceArea,UnifiedCode_5,(adminArea_8 & adminArea_81) as local,location_71,location_72 from Debris_flow_1
用C#执行这段sql语句的时候,将结果赋值给DataSet,access数据库可以执行,可是在程序里就不执行了,其中要注意哪些??求大神指点
public static DataSet DS(string SQL)
{
DataSet data_NXY = new DataSet();
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Coll_Info.mdb;Jet OLEDB:Database Password=++++;";
OleDbConnection SqlCon = new OleDbConnection(connStr);
SqlCon.Open();
System.Data.OleDb.OleDbDataAdapter ODAter = new OleDbDataAdapter(SQL, SqlCon);
ODAter.Fill(data_NXY);
ODAter.Dispose();
SqlCon.Close();
return data_NXY;
}
Microsoft.Jet.OLEDB.4.0
看下驱动有没有装,下载安装mdac
或者换ace 12.0
Data Source=Coll_Info.mdb
看下文件是否找到,建议用绝对路径
Database Password=++++
确认下是否有密码
DataSet 只是一个临时的对象,你想得到程序的运行结果是样的 你catch一下这个异常 应该能解释清楚 数据库一般操作都要catch一下异常的
ODAter.Dispose(); -- 注释掉;
data_NXY这个赋值给那个变量?
把方法改成这样你就知道为什么了。
public static DataSet DS(string SQL)
{
try
{
DataSet data_NXY = new DataSet();
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Coll_Info.mdb;Jet OLEDB:Database Password=++++;";
OleDbConnection SqlCon = new OleDbConnection(connStr);
SqlCon.Open();
System.Data.OleDb.OleDbDataAdapter ODAter = new OleDbDataAdapter(SQL, SqlCon);
ODAter.Fill(data_NXY);
ODAter.Dispose();
SqlCon.Close();
return data_NXY;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message)
throw;
}
}