using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;namespace XXXXXXXX
{
public abstract class DbObject
{
// Fields
protected OleDbConnection Connection;
protected static string connectionString;
// Properties
protected string ConnectionString
{
get
{
return DbObject.connectionString;
}
}
// Methods
static DbObject()
{
DbObject.connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
} public DbObject(string newConnectionString)
{
DbObject.connectionString = newConnectionString;
this.Connection = new OleDbConnection(DbObject.connectionString);
} private OleDbCommand BuildIntCommand(string storedProcName, IDataParameter[] parameters)
{
OleDbCommand command1 = this.BuildQueryCommand(storedProcName, parameters);
command1.Parameters.Add(new OleDbParameter("ReturnValue", OleDbType.Integer, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command1;
} private OleDbCommand BuildQueryCommand(string storedProcName, IDataParameter[] parameters)
{
OleDbCommand command1 = new OleDbCommand(storedProcName, this.Connection);
command1.CommandType = CommandType.StoredProcedure;
foreach (OleDbParameter parameter1 in parameters)
{
command1.Parameters.Add(parameter1);
}
return command1;
} protected OleDbDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
{
this.Connection.Open();
OleDbCommand command1 = this.BuildQueryCommand(storedProcName, parameters);
command1.CommandType = CommandType.StoredProcedure;
return command1.ExecuteReader();
} protected DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
DataSet set1 = new DataSet();
this.Connection.Open();
OleDbDataAdapter adapter1 = new OleDbDataAdapter();
adapter1.SelectCommand = this.BuildQueryCommand(storedProcName, parameters);
adapter1.Fill(set1, tableName);
this.Connection.Close();
return set1;
} protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
this.Connection.Open();
OleDbCommand command1 = this.BuildIntCommand(storedProcName, parameters);
rowsAffected = command1.ExecuteNonQuery();
int num1 = (int) command1.Parameters["ReturnValue"].Value;
this.Connection.Close();
return num1;
} protected void RunProcedure(string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName)
{
this.Connection.Open();
OleDbDataAdapter adapter1 = new OleDbDataAdapter();
adapter1.SelectCommand = this.BuildIntCommand(storedProcName, parameters);
adapter1.Fill(dataSet, tableName);
this.Connection.Close();
}
}
}
----------------------------------------------------------------------------------------
以上为代码部分,所有的存储过程都有,但是我现在想把它改成适用于ACCESS数据库的,应该改哪里?我改了一下午没弄明白改哪合适。

解决方案 »

  1.   

    你没看明白程序,去找DbObject.connectionString
      

  2.   

    改web.config里的ConnectionString,另外你要自己把存储过程改为sql
      

  3.   

    web.config我改了 改成SQL了,但是我没用过存储过程,上面的方法全是带参数基于存储过程的方法,有哪里不妥啊?比如这里!
    command1.Parameters.Add(new  OleDbParameter("ReturnValue",  OleDbType.Integer,  4,  ParameterDirection.ReturnValue,  false,  0,  0,  string.Empty,  DataRowVersion.Default,  null));
    怎么看怎么不顺眼,哈哈!这样情况下报错是这样的!
    多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。 
     XXX.Accounts.DbObject.RunProcedure(String storedProcName, IDataParameter[] parameters, Int32& rowsAffected)这个方法就在以上代码中!