我用了一个类项目,里面写了一个dbhelper ,然后default页引用 dbhleper 实现repeater 的数据绑定,现在的问题是,需要加一个接口项目,default页通过接口调用方法。我不知道如何操作,怎么个思路,有大侠给个建议吗?
我原来的 default页的代码 是
namespace web
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
getBind();
}
private void getBind()
{ string SQL_SELECT_USER = "SELECT [id],[title],[n_content],[datetime] FROM [news]"; DataSet ds = db.ExecuteDataSet(SQL_SELECT_USER);
Repeater.DataSource = ds.Tables[0];
Repeater.DataBind();
}
}
}原来的 dbhelper的代码,简短贴下。
namespace SQLServerDAL
{
/// <summary>
/// 用来创建DataBase对象的静态类
/// </summary>
public static class DBHelper
{
public static DataBase CreateData(string DataNameInConfigfile)
{
string pn = ConfigurationManager.ConnectionStrings[DataNameInConfigfile].ProviderName; //读取配置文件
string cs = ConfigurationManager.ConnectionStrings[DataNameInConfigfile].ConnectionString; //下面判断数据库类型并创建相应的对象 if (pn.ToUpper().Contains("OLEDB"))
{
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = new OleDbCommand();
oledbda.SelectCommand.Connection = new OleDbConnection(cs);
return new DataBase(oledbda);
}
if (pn.ToUpper().Contains("SQL"))
{
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = new SqlConnection(cs);
return new DataBase(sqlda);
}
if (pn.ToUpper().Contains("ODBC"))
{
OdbcDataAdapter odbcda = new OdbcDataAdapter();
odbcda.SelectCommand = new OdbcCommand();
odbcda.SelectCommand.Connection = new OdbcConnection(cs);
return new DataBase(odbcda);
}
return null;
} public static DataBase CreateData(string ConnectionString, string ProviderName)
{
//以下判断数据库类型并创建相应的对象
if (ProviderName.ToUpper().Contains("OLEDB"))
{
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = new OleDbCommand();
oledbda.SelectCommand.Connection = new OleDbConnection(ConnectionString);
return new DataBase(oledbda);
}
if (ProviderName.ToUpper().Contains("SQL"))
{
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = new SqlConnection(ConnectionString);
return new DataBase(sqlda);
}
if (ProviderName.ToUpper().Contains("ODBC"))
{
OdbcDataAdapter odbcda = new OdbcDataAdapter();
odbcda.SelectCommand = new OdbcCommand();
odbcda.SelectCommand.Connection = new OdbcConnection(ConnectionString);
return new DataBase(odbcda);
}
return null;
}
} /// <summary>
/// 执行主要操作的类
/// </summary>
public class DataBase
{
private DbDataAdapter mDataAdapter; //指向传入的DbDataAdapter的引用
private DbCommand mCommand; //指向传入的DbDataAdapter.SelectCommand的引用 /// <summary>
/// 构造函数
/// </summary>
/// <param name="DDA">获得一个实例化了的DbDataAdapter的派生类</param>
public DataBase(DbDataAdapter DDA)
{
mDataAdapter = DDA;
mCommand = DDA.SelectCommand;
} /// <summary>
/// 判断一个stirng是否为储存过程
/// </summary>
/// <param name="SQLText">目标string</param>
/// <returns>返回是否为储存过程的调用</returns>
private bool IsProcedure(string SQLText)
{
if (SQLText.Contains(" "))
{
string[] tmp;
tmp = SQLText.Split(' ');
if (tmp[0].ToUpper() == "EXECUTE" || tmp[0].ToUpper() == "EXEC")
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
} /// <summary>
/// 执行数据库命令返回受影响的行数
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <returns>受影响的行数</returns>
public int ExecuteNonQuery(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
return mCommand.ExecuteNonQuery();
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
} /// <summary>
/// 执行数据库命令返回DataReader
/// </summary>
/// <param name="SQLText">SQL命令</param>
/// <returns>返回DataReader</returns>
public DbDataReader ExecuteReader(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
mCommand.Connection.Open();
try
{
return mCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
finally
{ ClearParameters(); }
} /// <summary>
/// 执行统计的方法
/// </summary>
/// <param name="SQLText">SQL命令</param>
/// <returns>返回object对象代表统计数据或者结果的第一列第一行</returns>
public object ExecuteScalar(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
return mCommand.ExecuteScalar();
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
} /// <summary>
/// 执行查询返回填充的DataSet对象
/// </summary>
/// <param name="SQLText">SQl命令</param>
/// <param name="VisualTableName">虚拟表名</param>
/// <param name="StartIndex">制定返回多少行以后的数据</param>
/// <param name="Count">制定总共返回多少行</param>
/// <returns>返回按要求填充了的DataSet</returns>
public DataSet ExecuteDataSet(string SQLText, string VisualTableName, int StartIndex, int Count)
{
DataSet ds = new DataSet();
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
mDataAdapter.Fill(ds, StartIndex, Count, VisualTableName);
return ds;
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
}
我原来的 default页的代码 是
namespace web
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
getBind();
}
private void getBind()
{ string SQL_SELECT_USER = "SELECT [id],[title],[n_content],[datetime] FROM [news]"; DataSet ds = db.ExecuteDataSet(SQL_SELECT_USER);
Repeater.DataSource = ds.Tables[0];
Repeater.DataBind();
}
}
}原来的 dbhelper的代码,简短贴下。
namespace SQLServerDAL
{
/// <summary>
/// 用来创建DataBase对象的静态类
/// </summary>
public static class DBHelper
{
public static DataBase CreateData(string DataNameInConfigfile)
{
string pn = ConfigurationManager.ConnectionStrings[DataNameInConfigfile].ProviderName; //读取配置文件
string cs = ConfigurationManager.ConnectionStrings[DataNameInConfigfile].ConnectionString; //下面判断数据库类型并创建相应的对象 if (pn.ToUpper().Contains("OLEDB"))
{
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = new OleDbCommand();
oledbda.SelectCommand.Connection = new OleDbConnection(cs);
return new DataBase(oledbda);
}
if (pn.ToUpper().Contains("SQL"))
{
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = new SqlConnection(cs);
return new DataBase(sqlda);
}
if (pn.ToUpper().Contains("ODBC"))
{
OdbcDataAdapter odbcda = new OdbcDataAdapter();
odbcda.SelectCommand = new OdbcCommand();
odbcda.SelectCommand.Connection = new OdbcConnection(cs);
return new DataBase(odbcda);
}
return null;
} public static DataBase CreateData(string ConnectionString, string ProviderName)
{
//以下判断数据库类型并创建相应的对象
if (ProviderName.ToUpper().Contains("OLEDB"))
{
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = new OleDbCommand();
oledbda.SelectCommand.Connection = new OleDbConnection(ConnectionString);
return new DataBase(oledbda);
}
if (ProviderName.ToUpper().Contains("SQL"))
{
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = new SqlConnection(ConnectionString);
return new DataBase(sqlda);
}
if (ProviderName.ToUpper().Contains("ODBC"))
{
OdbcDataAdapter odbcda = new OdbcDataAdapter();
odbcda.SelectCommand = new OdbcCommand();
odbcda.SelectCommand.Connection = new OdbcConnection(ConnectionString);
return new DataBase(odbcda);
}
return null;
}
} /// <summary>
/// 执行主要操作的类
/// </summary>
public class DataBase
{
private DbDataAdapter mDataAdapter; //指向传入的DbDataAdapter的引用
private DbCommand mCommand; //指向传入的DbDataAdapter.SelectCommand的引用 /// <summary>
/// 构造函数
/// </summary>
/// <param name="DDA">获得一个实例化了的DbDataAdapter的派生类</param>
public DataBase(DbDataAdapter DDA)
{
mDataAdapter = DDA;
mCommand = DDA.SelectCommand;
} /// <summary>
/// 判断一个stirng是否为储存过程
/// </summary>
/// <param name="SQLText">目标string</param>
/// <returns>返回是否为储存过程的调用</returns>
private bool IsProcedure(string SQLText)
{
if (SQLText.Contains(" "))
{
string[] tmp;
tmp = SQLText.Split(' ');
if (tmp[0].ToUpper() == "EXECUTE" || tmp[0].ToUpper() == "EXEC")
{
return true;
}
else
{
return false;
}
}
else
{
return true;
}
} /// <summary>
/// 执行数据库命令返回受影响的行数
/// </summary>
/// <param name="SQLText">SQL语句</param>
/// <returns>受影响的行数</returns>
public int ExecuteNonQuery(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
return mCommand.ExecuteNonQuery();
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
} /// <summary>
/// 执行数据库命令返回DataReader
/// </summary>
/// <param name="SQLText">SQL命令</param>
/// <returns>返回DataReader</returns>
public DbDataReader ExecuteReader(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
mCommand.Connection.Open();
try
{
return mCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
finally
{ ClearParameters(); }
} /// <summary>
/// 执行统计的方法
/// </summary>
/// <param name="SQLText">SQL命令</param>
/// <returns>返回object对象代表统计数据或者结果的第一列第一行</returns>
public object ExecuteScalar(string SQLText)
{
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
return mCommand.ExecuteScalar();
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
} /// <summary>
/// 执行查询返回填充的DataSet对象
/// </summary>
/// <param name="SQLText">SQl命令</param>
/// <param name="VisualTableName">虚拟表名</param>
/// <param name="StartIndex">制定返回多少行以后的数据</param>
/// <param name="Count">制定总共返回多少行</param>
/// <returns>返回按要求填充了的DataSet</returns>
public DataSet ExecuteDataSet(string SQLText, string VisualTableName, int StartIndex, int Count)
{
DataSet ds = new DataSet();
if (IsProcedure(SQLText)) { mCommand.CommandType = CommandType.StoredProcedure; } else { mCommand.CommandType = CommandType.Text; }
mCommand.CommandText = SQLText;
try
{
mCommand.Connection.Open();
mDataAdapter.Fill(ds, StartIndex, Count, VisualTableName);
return ds;
}
finally
{
mCommand.Connection.Close();
ClearParameters();
}
}
能问下 公有类指的是哪个嘛?
那么为什么要费这一遍事呢?直接调用 dbhelper 不可以吗?
针对于现在的 dbhelper ,我的接口类里面应该写什么呢?写 定义个 string 连接字符串?然后用 get set?