因为项目中一直使用Enterprise Library- Data Block oralce作服务器端的应用。现在要做一个桌面的应用。为了统一,也准备使用 Enterprise Library- Data Block 来做 MS Access 。于是就上网找了 Enterprise Library的Oledb的源代码,回来自己手动编译生成 dll 。
/Files/culturenet/OleDbData.zip
配置以后,使用代码如下:
使用中发生异常。
跟踪发现,原来是 传入 的 Command 的 CommandType 为 StoredProcedure 造成的。
于是乎就有两种做法来避免异常:
1、在Access中用 SELECT * FROM MYRESOURCE 建立一个查询,名字为:SOURCE
使用代码为:
2、直接在代码中指定 CommandType 为 text
代码如下:
呵呵,今天早上忽然记起来,可以使用 GetSqlStringCommandWrapper 方法来代替 GetStoredProcCommandWrapper,就不用设置CommandType了。昨天晚上肯定是晕了,以前经常用的方法都给忘了。
/Files/culturenet/OleDbData.zip
配置以后,使用代码如下:
Database db = DatabaseFactory.CreateDatabase("AccessDb");
string sqlCommand = "SELECT * FROM MYRESOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
string sqlCommand = "SELECT * FROM MYRESOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
使用中发生异常。
跟踪发现,原来是 传入 的 Command 的 CommandType 为 StoredProcedure 造成的。
于是乎就有两种做法来避免异常:
1、在Access中用 SELECT * FROM MYRESOURCE 建立一个查询,名字为:SOURCE
使用代码为:
Database db = DatabaseFactory.CreateDatabase("AccessDb");
string sqlCommand = "SOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
string sqlCommand = "SOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
2、直接在代码中指定 CommandType 为 text
代码如下:
Database db = DatabaseFactory.CreateDatabase("AccessDb");
string sqlCommand = "SELECT * FROM MYRESOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
dbCommandWrapper.Command.CommandType=CommandType.Text;
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
string sqlCommand = "SELECT * FROM MYRESOURCE";
DBCommandWrapper dbCommandWrapper =db.GetStoredProcCommandWrapper(sqlCommand);
dbCommandWrapper.Command.CommandType=CommandType.Text;
DataSet ds=db.ExecuteDataSet(dbCommandWrapper);
dataGrid1.DataSource=ds.Tables[0];
呵呵,今天早上忽然记起来,可以使用 GetSqlStringCommandWrapper 方法来代替 GetStoredProcCommandWrapper,就不用设置CommandType了。昨天晚上肯定是晕了,以前经常用的方法都给忘了。