access好像是不支持存储过程的..OleDbCommand cmd = new OleDbCommand("存储过程名称", conn))
cmd.CommandType = CommandType.StoredProcedure;
OleDbCommandBuilder.DeriveParameters(cmd);
从在 OleDbCommand 中指定的存储过程中检索参数信息并填充指定的 OleDbCommand 对象的 Parameters 集合。
可是这句如何理解.我看呢半天硬是不明白

解决方案 »

  1.   

    OleDbCommand 是除sql server以外的所有数据库连接,lz确认你连接的数据库是access吗,不是oracle?
      

  2.   

    哟,回答错了,sql server也可以用这个来访问数据库,不过效率低些
      

  3.   

    给个例子试试就知道了
    OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb");
    con.Open();
    OleDbCommand dc=new OleDbCommand("select name from us where id=2", con);
    textBox1.Text=dc.ExecuteScalar().ToString();OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb");
    con.Open();
    OleDbCommand dc=new OleDbCommand("insert into us (name) values (11)", con);
    dc.ExecuteNonQuery();
    con.Close();
    string us=textBox2.Text;
    string pa=textBox1.Text;
    OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb"); 
    OleDbCommand oldC=new OleDbCommand("insert into users (username, userpassword) values (@username, @userpassword)", con);
    oldC.Parameters.Add("@username", us);
    oldC.Parameters.Add("@userpassword", pa);
    con.Open();
    oldC.ExecuteNonQuery();
    con.Close();
    MessageBox.Show("Register successful!");
    this.Dispose();
    使用参数的时候,参数是有顺序的。@username 和 @userpassword 的顺序要写对,不能颠倒过来。
      
      

  4.   

    楼上说的那种方式我知道。。
    我不理解的是这句OleDbCommandBuilder.DeriveParameters(cmd);从在 OleDbCommand 中指定的存储过程中检索参数信息并填充指定的 OleDbCommand 对象的 Parameters 集合。 
      

  5.   


    楼上能否给个列子OleDbCommand cmd = new OleDbCommand("存储过程名称", conn))
    cmd.CommandType = CommandType.StoredProcedure;
    OleDbCommandBuilder.DeriveParameters(cmd);我看别人的代码。在 OleDbCommand 定义呢存储过程的名称。access如何实现根据存储过程名称 得到   参数集合
      

  6.   

    我记得ACCESS不支持@param 的