DBHelper是数据库系统中常用的类,通常用它来处理针对数据库的操作,比如基本的CRUD。一个人在写了一段程序后,不管用的是什么语言,这个类肯定能自己写了,当然,写出来的玩意千差万别,各有千秋,五花八门,啥样的都有,是啊,林子大了。
Version1.0:
public class DBHelper
{
SqlConnection cnn = new SqlConnection(@"server=.;uid=sa;pwd=;database=testDB;");
public int ExecuteNonQuery(string sql)
{
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = sql;
cnn.Open();
int x = cmd.ExecuteNonQuery();
cnn.Close();
return x;
}
public DataTable GetTable(string sql)
{
SqlCommand cmd = cnn.CreateCommand();
cmd.CommandText = sql;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
这个版本的问题在于:实在没法避免客户直接在sql字符串中胡乱输入,比如“' or 1=1 --”,这种问题实在没法避免,因为你用的是sql语句,拼进来的玩意作为sql语句的一部分去执行,而不是作为参数方式,不管你用“+”拼接字符串,还是用string.Format来整合,都不是好办法。
还有个问题,在于如果某个查询只返回一行一列的数据,使用GetTable,显然有点浪费。
因此下一个版本的更改在于参数的处理,和方法的增加上。
土鳖扛铁牛。
转摘自:http://blog.sina.com.cn/s/blog_49458c270100hgno.html