private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection coon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\famliy.mdb;");
            coon.Open();
            string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";
            OleDbCommand cmd = new OleDbCommand(sql, coon);
            cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;
            int count = (int)cmd.ExecuteNonQuery();  --- 这里报错:查询值的数目与目标字段中的数目不同 
            if (count > 0)
            {
                MessageBox.Show("增加成功");
            }
查询倒是可以用,就是增加报错,本来我是整SQL2005的,但是没办法必须要转换成ACCESS的数据库,请各位帮忙看看

解决方案 »

  1.   

                string sql = "insert into Familyjcname(famfamNamejc) values(@f1)"; 
                OleDbCommand cmd = new OleDbCommand(sql, coon); 
                cmd.Parameters.Add("@f1", OleDbType.VarChar).Value = textBox1.Text; 
      

  2.   

    insert into Familyjcname(famNo,famfamNamejc) values(@1)两个字段:famNo,famfamNamejc
    一个值:@1
    不一致。
      

  3.   

    我不是很理解呀,为什么你的sql语句里是插入两列数据,但是你给的参数是一个呀
      

  4.   

    但是第一个键是自动增长的,
     string sql = "insert into Familyjcname(famfamNamejc) values(@f1)"; 
     还是会报错。
      

  5.   

    string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";很明显的错误...下面都不用看了
      

  6.   

    string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)"; -- 其中famNo是自动增长列。string sql = "insert into Familyjcname(famfamNamejc) values(@f1)"; 
    这样行不通的。
      

  7.   

                string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)"; 
                OleDbCommand cmd = new OleDbCommand(sql, coon); 
                cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text; 把你的textBox1.Text的值换一个值,如;"AAA"...
    看还会出错不,感觉可能是传入的变量出问题了.
      

  8.   


    错误信息是什么?自动增长列是不能写在insert的字段列表中的。
      

  9.   

    insert into Familyjcname(famfamNamejc) values(@f1)这样数目已经一致了。除非你的famNo不是自动增长的。你可以把下面的语句在 Access 中执行一下看会不会出错:
    insert into Familyjcname(famfamNamejc) values('abcd')
      

  10.   

    我是SQL2005数据库直接转ACCESS的,自动增长列在ACCESS里面也增加了 
      

  11.   

    Familyjcname表中可能还有其他字段你没有给它们赋值。
      

  12.   

    楼主你真逗,你的SQL语句错误了
      

  13.   

    我也有过类似的问题,而且很奇怪的。
    我也是直接用SQLSERVER2005直接导出给ACCESS的,然后也在ACCESS这边修改了自增列。
    有两张表,前面一张表做的没问题,但是第二张表给前面类似的,可是插入语句就是一直报错,更新也不行,只有删除没问题,对ACCESS真是不会用,还望下面有高人继续指点啊 
      

  14.   

    string sql = "insert into Familyjcname(famNo,famfamNamejc) values(@1)";
                OleDbCommand cmd = new OleDbCommand(sql, coon);
                cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text; 
    string sql="insert into Familyjcaname(famNo,famfamNamejc) values(@1)";
    感觉是这样错了。。
      

  15.   

      不知道你解决了没有
        我以前也碰国类似的问题
     正解是:
      string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
      OleDbCommand cmd = new OleDbCommand(sql, coon); 
      cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text; 
      

  16.   

      不知道你解决了没有
        我以前也碰到类似的问题
     正解是:
      string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
      OleDbCommand cmd = new OleDbCommand(sql, coon); 
      cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text; 
      

  17.   

      不知道你解决了没有
        我以前也碰到类似的问题
     正解是:
      string sql = "insert into [Familyjcname]([famfamNamejc]) values(@1)";
      OleDbCommand cmd = new OleDbCommand(sql, coon); 
      cmd.Parameters.Add("@1", OleDbType.VarChar).Value = textBox1.Text;