在网上搜索了一篇 access数据库操作类http://blog.csdn.net/luchuanbo/article/details/4430666public class Access_db
{......
        /// <summary>      
        /// 执行查询语句,返回SqlDataReader (使用该方法切记要手工关闭SqlDataReader和连接)      
        /// </summary>      
        /// <param name="strSQL">查询语句</param>      
        /// <returns>SqlDataReader</returns>      
        public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)  
        {  
            OleDbConnection connection = new OleDbConnection(connectionString);  
            OleDbCommand cmd = new OleDbCommand();  
            try  
            {  
                PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                OleDbDataReader myReader = cmd.ExecuteReader();  
                cmd.Parameters.Clear();  
                return myReader;  
            }  
            catch (System.Data.OleDb.OleDbException e)  
            {  
                throw new Exception(e.Message);  
            }  
            //finally //不能在此关闭,否则,返回的对象将无法使用      
            //{      
            //  cmd.Dispose();      
            //  connection.Close();      
            //}      
        }  ......}我想问一下这个要怎么调用??Access_db my_test=new Access_db();
my_test.ExecuteReader(????)求高手指点一下,谢谢。

解决方案 »

  1.   

    Access_db.ExecuteReader(SQLString,cmdParms)
    注意定义喔 public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)
    //静态方法
      

  2.   

    my_test.ExecuteReader("select * from xxx",new OleDbParameter("@pname", Convert.ToInt32(0)))看OleDbParameter的帮助
      

  3.   


    Access_db.ExecuteReader(SQLString,cmdParms)
    这个我能理解,就是 cmdParms 具体应该是个什么样的内容??
      

  4.   

    OleDbParameter类型的参数 基本上是SQL语句的参数值 因为很多情况参数不止一个 所以基本是参数数组.
    如2楼的 my_test.ExecuteReader("select * from xxx where pname=@pname",new OleDbParameter("@pname", Convert.ToInt32(0)))
      

  5.   

    sql = "Insert Into [member] ([username],[password]) VALUES (@name ,@pwd)";OleDbCommand cmd = new OleDbCommand(sql, conn);
            OleDbParameter p1 = new OleDbParameter("@name", OleDbType.VarChar, 50);
            p1.Value = name;
            OleDbParameter p2 = new OleDbParameter("@pwd", OleDbType.VarChar, 50);
            p2.Value = pwd;        cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
    传递类似的参数数组
    OleDbCommand dbs = new OleDbCommand[]{p1,p2};
      

  6.   

    cmdParms参数的集合,类似下面这个
    SqlParameter[] paras = {
    new SqlParameter("@a",a),
                                    new SqlParameter("@b", b)
                                    };
      

  7.   

    基本以参数的形式进行SQL参数赋值 而不是直接拼接字符串(然后变量赋值) 是为了防止SQL注入。
      

  8.   


    非常感谢,但我还是不太明白,这        public static OleDbDataReader ExecuteReader(string strSQL)  
            {  
                OleDbConnection connection = new OleDbConnection(connectionString);  
                OleDbCommand cmd = new OleDbCommand(strSQL, connection);  
                try  
                {  
                    connection.Open();  
                    OleDbDataReader myReader = cmd.ExecuteReader();  
                    return myReader;  
                }  
                catch (System.Data.OleDb.OleDbException e)  
                {  
                    throw new Exception(e.Message);  
                }  
                //finally //不能在此关闭,否则,返回的对象将无法使用      
                //{      
                //  cmd.Dispose();      
                //  connection.Close();      
                //}      
            }  
     /// <summary>   
      /// 执行查询语句,返回SqlDataReader (使用该方法切记要手工关闭SqlDataReader和连接)   
      /// </summary>   
      /// <param name="strSQL">查询语句</param>   
      /// <returns>SqlDataReader</returns>   
      public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)   
      {   
      OleDbConnection connection = new OleDbConnection(connectionString);   
      OleDbCommand cmd = new OleDbCommand();   
      try   
      {   
      PrepareCommand(cmd, connection, null, SQLString, cmdParms);   
      OleDbDataReader myReader = cmd.ExecuteReader();   
      cmd.Parameters.Clear();   
      return myReader;   
      }   
      catch (System.Data.OleDb.OleDbException e)   
      {   
      throw new Exception(e.Message);   
      }   
      //finally //不能在此关闭,否则,返回的对象将无法使用   
      //{   
      // cmd.Dispose();   
      // connection.Close();   
      //}   
      }   这两个函数有什么区别。第一个到底应该在什么情况下,会运用到呢?
    第二个就非常简单一看就明白。
      

  9.   

    这个就是提供了ExecuteReader的2个重载 第一个是在SQL语句没有参数的情况下使用 第二个则是由参数的情况下 使用的.
      

  10.   

    你调用的方法里有两个参数,第一个SQLstring从字面上你就能理解了,是操作数据库的SQL语句 ,如"select * from 表名",第二个我不很懂,你把鼠标放到哪个参数上(在VS里它是蓝色的)有提示的,应二楼应该是正解。