请大家给点建议.
/// <summary>
/// 以下:DataBaseDB类
/// 作用:本想封装一个SQL类,但是之前的代码又不想抹掉,于是还保留DataBaseDB类.
/// </summary>
public class DataBaseDB {
//定义连接字符串
public static string ConnectionString=ConfigurationSettings.AppSettings["SQLCONNECTIONSTRING"];
} /// <summary>
/// 以下:DB类
/// 作用:封装一个SQL类,比如查询,返回DataSet or DataReader
/// sample: db d=new db(); db.s="select.."; db.retdr();
/// sample: db.s="..."; db.retrs("表名");
/// sample: db.s="..."; db.retnon();
/// </summary>
public class db
{
/* private */string s;
SqlConnection conn;
SqlCommand cmd;
/* SqlDataAdapter da; */
DataSet ds;
SqlDataReader dr;
//ctor
public db()
{ s="";
ds=null;
dr=null;
conn=new SqlConnection(DataBaseDB.ConnectionString );
cmd=new SqlCommand ();
cmd.Connection=conn;
/* da=new SqlDataAdapter (conn);
dr=new SqlDataReader ();
ds=new DataSet (); */
}
//dtor "~db()" 会出错。所以改名为close()
~db()
{
if(conn.State.ToString ()=="Open")conn.Close();
if(dr!=null || !dr.IsClosed)dr.Close ();
if(ds!=null)ds.Clear();
} /*设置Sql string,这样做有个好处就是免被注入SQL
public void setsqlstring(string str){
s=str;
}*/ //返回SQLDataReader
public void retdr()
{
cmd.CommandText =s;
conn.Open ();
dr=cmd.ExecuteReader (CommandBehavior.CloseConnection );
conn.Close ();
}
//没有返回
public void retnon()
{
cmd.CommandText =s;
conn.Open ();
cmd.ExecuteNonQuery();
conn.Close ();
}
//返回dataset
public void retds(string TableName)
{
cmd.CommandText =s;
ds=new DataSet ();
SqlDataAdapter da=new SqlDataAdapter (cmd);
da.Fill (ds,TableName);
}
//其他处理,暂时想不出来。 }
/// <summary>
/// 以下:DataBaseDB类
/// 作用:本想封装一个SQL类,但是之前的代码又不想抹掉,于是还保留DataBaseDB类.
/// </summary>
public class DataBaseDB {
//定义连接字符串
public static string ConnectionString=ConfigurationSettings.AppSettings["SQLCONNECTIONSTRING"];
} /// <summary>
/// 以下:DB类
/// 作用:封装一个SQL类,比如查询,返回DataSet or DataReader
/// sample: db d=new db(); db.s="select.."; db.retdr();
/// sample: db.s="..."; db.retrs("表名");
/// sample: db.s="..."; db.retnon();
/// </summary>
public class db
{
/* private */string s;
SqlConnection conn;
SqlCommand cmd;
/* SqlDataAdapter da; */
DataSet ds;
SqlDataReader dr;
//ctor
public db()
{ s="";
ds=null;
dr=null;
conn=new SqlConnection(DataBaseDB.ConnectionString );
cmd=new SqlCommand ();
cmd.Connection=conn;
/* da=new SqlDataAdapter (conn);
dr=new SqlDataReader ();
ds=new DataSet (); */
}
//dtor "~db()" 会出错。所以改名为close()
~db()
{
if(conn.State.ToString ()=="Open")conn.Close();
if(dr!=null || !dr.IsClosed)dr.Close ();
if(ds!=null)ds.Clear();
} /*设置Sql string,这样做有个好处就是免被注入SQL
public void setsqlstring(string str){
s=str;
}*/ //返回SQLDataReader
public void retdr()
{
cmd.CommandText =s;
conn.Open ();
dr=cmd.ExecuteReader (CommandBehavior.CloseConnection );
conn.Close ();
}
//没有返回
public void retnon()
{
cmd.CommandText =s;
conn.Open ();
cmd.ExecuteNonQuery();
conn.Close ();
}
//返回dataset
public void retds(string TableName)
{
cmd.CommandText =s;
ds=new DataSet ();
SqlDataAdapter da=new SqlDataAdapter (cmd);
da.Fill (ds,TableName);
}
//其他处理,暂时想不出来。 }
解决方案 »
- textbox更新
- 提交按钮的OnClientClick="return js方法()"这个在火狐下为什么都会直接提交,在IE就没事
- silverlight下读写listbox控件问题
- access中的sql语句问题
- 同志们,帮小弟提高提高,就一个小问题
- 新手 asp.net配置网站主目录问题
- 关于SMTP的一个小问题,不明白,这里拜请各位老大了..,,,,
- 请教高手,如何将FTP命令带入C#代码运行,得到手工操作的结果?
- 收入/支出的凭证要用打印机打印出来要怎么做
- b/s web页面数据导出到Excel表,求例子
- 奇怪的问题!我在群里问没人遇到过!在这求救!
- DataGrid模板列的取值问题!
-------------
使用参数的Comand可以避免SQL注册.
方法直接返回操作值,在操作性上会方便很多。
参数上不灵活,同是执行多个操作麻烦(可以参SQLHELPER,早期的版设计是无状态,所以参数多使用也麻烦,现在的版本不清楚)
最好提借参数化语句执行,可以防止SQL注入。
楼主有一个最重要的地方没有考虑,在多操作的情况如何如果事务保证,如果项目使用了你的类后期才必现事务这问题那你会很头痛。(不过也可以通过COM+包装来减少修改)
以上只是个人看法。
conn.Open ();
dr=cmd.ExecuteReader (CommandBehavior.CloseConnection );
conn.Close ();
----
楼主自己看下代码有没有问题