应该是你的ID没有初始化的原因~,其它不用那么复杂,你自己为那个添加一个递增ID列,那个问题就简单了,alter table 发言 add id int identity(1001,1)
 以后插入的时候也不用管那个自增列.

解决方案 »

  1.   

    应该是你的ID没有初始化的原因~,其它不用那么复杂,你自己为那个添加一个递增ID列,那个问题就简单了,alter table 发言 add id int identity(1001,1)
     以后插入的时候也不用管那个自增列
    我的id列已经付值了,数据库里有数据!
    难道非得用添加一个递增ID列才行妈?
    我实在看不出来有什么错误!是不是参数有问题,还是参数类型有问题?
      

  2.   

    完整的错误程序如下:
    long artid;
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = (ConfigurationManager.ConnectionStrings["ConnStr"]).ToString();
            conn.Open();
            OleDbCommand cmd = new OleDbCommand("select max(id) as aid from 发言", conn);
            OleDbDataReader read = cmd.ExecuteReader(); read.Read();
            if (read[0]==DBNull.Value)
                artid = 1;
            else artid =Convert.ToInt64( read[0].ToString()) + 1;
            read.Close();
            conn.Close();
            conn.Open();        OleDbDataAdapter da = new OleDbDataAdapter();
            da.InsertCommand = new OleDbCommand();
            da.InsertCommand.CommandText = "insert into 发言(id,主题,作者,发表时间,内容) values(?,?,?,?,?)";
            da.InsertCommand.Connection = conn;
            da.InsertCommand.Parameters.Add("@id", OleDbType.BigInt);
            da.InsertCommand.Parameters.Add("@zhuti", OleDbType.VarChar, 20);
            da.InsertCommand.Parameters.Add("@zuozhe", OleDbType.VarChar, 20);
            da.InsertCommand.Parameters.Add("@shijian",OleDbType.DBTimeStamp);
            da.InsertCommand.Parameters.Add("@neirong", OleDbType.VarChar);
            da.SelectCommand = new OleDbCommand();
            da.SelectCommand.Connection = conn; da.SelectCommand.CommandText = "select * from 发言";
            DataSet ds = new DataSet();
            da.Fill(ds, "发言");
            DataTable stut = ds.Tables["发言"];
            DataRow stur = stut.NewRow();
            stur["id"] = artid;
            stur["主题"] = TextBox1.Text;
            stur["作者"] = TextBox2.Text;
            stur["发表时间"] = DateTime.Now.ToUniversalTime();
            stur["内容"] = TextBox3.Text;
            stut.Rows.Add(stur);
            da.Update(ds, "发言");
    连接数据库是没有问题的,只是插入的时候da.Update(ds, "发言");这句话老出错!参数 ?_1 没有默认值。
      

  3.   

    我用的是 access不是别的数据库!