在项目开发中经常要访问数据库,查询、插入一些数据等等之类的。
每次在访问之前都要先建立连接,设置查询命令,执行查询,取出结果并
释放连接,很麻烦,所以可以封装一个数据库访问类,只需要调用相应的
查询或插入函数,给它传入表名,SQL语句等参数,就等取得查询结果或
完成插入。我也在书上看到过一些这种类,但在这里有一个小问题:    我看很多例子都是给函数一条构造好的sql语句,如
   string str_sql = "select * from stu where id="+stdID ;
然后把str_sql传给函数让它执行,在这里的stdID往往都是接收到的用户
输入的值,这样会不会很容易受到注入攻击?
  
    一般的方法是设置参数再传值来防止注入攻击,如:SqlCommand objCommand = new SqlCommand("", objConnection);
objCommand.CommandText = " SELECT * FROM stu WHERE ID = @myID";
objCommand.Parameters.Add("myID", SqlDbType.VarChar);// 设置Sql语句参数           
 bjCommand.Parameters["myID"].Value = stuID;现在我不知道怎么去写一个数据库操作函数,使系统可以安全的执行数据库操作

解决方案 »

  1.   

    楼主想法很好,值得估计.
    自己写程序,根据输入的值和选择的生成SQL语句,然后动态执行.有关注入参考:SQL注入专题
    http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html
      

  2.   

    有一本清华的书里面的实例就是用参数处理查询,黄皮的<ASP.net项目开发全程实录>里用的就是,<c#项目开发全程实录>等等系列其它书我没看过,不知有没有.