SqlCommand myCommand = new SqlCommand();
myCommand.Connection=conn;
            myCommand.CommandType = CommandType.Text;
myCommand.CommandText = "insert 接收人列表(UID,接收人名称)values(@id,@name)";
myCommand.Parameters.Add("@id",SqlDbType.VarChar,50,TextBox1.Text);
myCommand.Parameters.Add("@name",SqlDbType.VarChar,50,TextBox2.Text); int a = myCommand.Parameters.Count;
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand= myCommand;
DataSet ds = new DataSet();
    sda.Fill(ds);我这样 他提示被准备语句 '(@id varchar(50),@name varchar(50))insert 接收人列表(UID,接收人名称)values' 需要参数 @id,但未提供该参数。各位高手帮忙看看

解决方案 »

  1.   

    myCommand.CommandText = insert into 表名 "(UID,接收人名称)values(@id,@name)";SQL语句忘了写表名了
      

  2.   

    "insert 接收人列表(UID,接收人名称)values(@id,@name)";楼上正解
      

  3.   

    跟踪一下myCommand.Parameters.Add("@id",SqlDbType.VarChar,50,TextBox1.Text);的textbox1.text是否有值
      

  4.   

    insert 接收人列表(UID,接收人名称) values(@id,@name)values前面好像少个空格
      

  5.   

    不好意思,好像确实没关系.SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand= myCommand;把这两句改为一句:
    SqlDataAdapter sda = new SqlDataAdapter(myCommand);
    你这个command应该不是selectcommand而是insertcommand
      

  6.   

    不过有个问题,你既然是要insert一条记录
    直接用myCommand.ExecuteNonQuery()不就行了吗?
    为什么还要用dataadapter和dataset
      

  7.   

    我试了 把selectcommand而改成insertcommand
    还是那个错误
      

  8.   

    insert into 接收人列表(UID,接收人名称) values(@id,@name)
      

  9.   

    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand= myCommand;
    DataSet ds = new DataSet();
    sda.Fill(ds);这些都不要了
    换成:
    conn.Open();
    myCommand.ExecuteNonQuery();
    conn.Close();
    异常问题你可以自己去处理
      

  10.   

    还是一样的错误,关键是为什么会出这个错被准备语句 '(@id varchar(50),@name varchar(50))insert 接收人列表(UID,接收人名称)values' 需要参数 @id,但未提供该参数。
      

  11.   

    整个SQL操作似乎没有执行 insert into~~~~~~~~~~  LZ漏写东西了
      

  12.   

    既然来了,也就看看:myCommand.Parameters.Add("@id",SqlDbType.VarChar,50,TextBox1.Text);
    myCommand.Parameters.Add("@name",SqlDbType.VarChar,50,TextBox2.Text);---->//你看一下Add方法重载的参数就明白了,另外,学会看错误信息
    myCommand.Parameters.Add("@id",TextBox1.Text);
    myCommand.Parameters.Add("@name",TextBox2.Text);
      

  13.   

    sda.Fill(ds,"表名") 试试哦,
      

  14.   

    你把Parameters分开写试试呢
    insert into 表名 values(@id)
    cmd.Parameters.Add("@id", SqlDbType.VarChar);
    cmd.Parameters["@id"].Value = TextBox1.Text;
      

  15.   

    myCommand.CommandText = "insert 接收人列表(UID,接收人名称)values(@id,@name)";
    你这句忘写into 了吧
      

  16.   

    string  strcon = "server=localhost;Uid=sa;Pwd=sa;DataBase=ygh";
    SqlConnection con = new SqlConnection(strcon);                 
    if(con.State==0) con.Open();                                  
    SqlCommand cmd = new SqlCommand("insert into Users(姓名, 学历, Email,性别) values(@name,@pwd,@email,@sex)",con);
    //cmd.CommandType = CommandType.StoredProcedure;                 
    cmd.Parameters.Add("@name",SqlDbType.NVarChar);                
    cmd.Parameters.Add("@pwd",SqlDbType.NVarChar);
    cmd.Parameters.Add("@email",SqlDbType.NVarChar);
    cmd.Parameters.Add("@sex",SqlDbType.Char);
              
    cmd.Parameters["@name"].Value = text1.Text;
    cmd.Parameters["@pwd"].Value = text2.Text;
    cmd.Parameters["@email"].Value = text3.Text;
    cmd.Parameters["@sex"].Value = text4.Text; text1.Text=string.Empty;
    text2.Text =string.Empty;
    text3.Text =string.Empty;
    text4.Text=string.Empty;
    cmd.ExecuteNonQuery();
    con.Close();
    MessageBox.Show("数据插入成功");
    看一看吧,这是我做的,在我这里没有问题哦,
    这是在winform中写的哦,web中也一样的哦,,