错误信息:System.Data.OleDb.OleDbException @id没有默认值。
红色代码出出错。
代码:
string mystring = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("App_Data/newsdase.mdb");
        OleDbConnection conn = new OleDbConnection(mystring);
        OleDbCommand cmm = new OleDbCommand("insert into news(fld_id,fld_title,fld_conternt,fld_author,fld_time) values(@id,@title,@conternt,@author,@time)",conn);        OleDbDataAdapter da=new OleDbDataAdapter(cmm);
             cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
        cmm.Parameters .Add("@title",OleDbType.VarChar ,10,"fld_title");
        cmm.Parameters .Add ("@conternt",OleDbType.VarChar ,10,"fld_conternt");
        cmm.Parameters .Add ("@author",OleDbType.VarChar ,10,"fld_author");
        cmm.Parameters .Add ("@time",OleDbType.VarChar,10,"fld_time");
        
        DataSet ds=new DataSet();
        da.Fill(ds, "news");        if (ds.Tables["news"].IsInitialized == true)
        {
            Response .Write("已成功向DataSet中添加名为" + ds.Tables ["news"].TableName + "的DataTable");
        }        DataRow dr=ds.Tables["news"].NewRow();        dr[0]=this.TextBox1.Text;
        dr[1]=this.TextBox2.Text;
        dr[2]=this.TextBox3.Text;
        dr[3]=this.TextBox4.Text;
        dr[4]=this.TextBox5.Text;
        ds.Tables["news"].Rows.Add(dr);        conn.Open();
        da.Update(ds);
        conn.Close();

解决方案 »

  1.   

    你的 conn 好像没有open
      

  2.   

    da.Fill(ds, "news")是查询,你这个OleDbCommand是插入,这2个东西都可以用,但不是这样用的。
    OleDbDataAdapter的insertcommand现在为OleDbCommand,selectcommand为空,所以出错
      

  3.   

    da.Fill(ds, "news")是查询,你这个OleDbCommand是插入,这2个东西都可以用,但不是这样用的。
    OleDbDataAdapter的insertcommand现在为OleDbCommand,selectcommand为空,所以出错
      

  4.   

    你的SQL语句是INSERT (添加记录)
    你没SELECT数据出来,如何da.Fill(ds, "news");  (没有数据如何绑定至ds)
      

  5.   

    cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
      cmm.Parameters .Add("@title",OleDbType.VarChar ,10,"fld_title");
      cmm.Parameters .Add ("@conternt",OleDbType.VarChar ,10,"fld_conternt");
      cmm.Parameters .Add ("@author",OleDbType.VarChar ,10,"fld_author");
      cmm.Parameters .Add ("@time",OleDbType.VarChar,10,"fld_time");
    没看到你给这些参数赋值啊。
    cmm.Parameters["@id"].Value=0;
    其它的以此类推。
      

  6.   

    cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
    这行去掉就好了。
      

  7.   

    修改了一下:有提示红色代码有错:
    string mystring = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("App_Data/newsdase.mdb");
            OleDbConnection conn = new OleDbConnection(mystring);
            OleDbCommand cmm = new OleDbCommand("insert into news values(@id,@title,@conternt,@author,@time,@no)",conn);        OleDbDataAdapter da=new OleDbDataAdapter(cmm);
            da.InsertCommand = cmm;
            cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
            cmm.Parameters .Add("@title",OleDbType.VarChar ,10,"fld_title");
            cmm.Parameters .Add ("@conternt",OleDbType.VarChar ,10,"fld_conternt");
            cmm.Parameters .Add ("@author",OleDbType.VarChar ,10,"fld_author");
            cmm.Parameters .Add ("@time",OleDbType.Date ,10,"fld_time");
            cmm.Parameters.Add("@no", OleDbType.Integer, 10, "fld_no");        DataSet ds = new DataSet();     
            DataRow dr=ds.Tables["news"].NewRow();        dr[0]=this.TextBox1.Text;
            dr[1]=this.TextBox2.Text;
            dr[2]=this.TextBox3.Text;
            dr[3]=this.TextBox4.Text;
            dr[4]=this.TextBox5.Text;
            ds.Tables["news"].Rows.Add(dr);        conn.Open();
            da.Update(ds);
            conn.Close();
        }
      

  8.   

     da.Fill(ds, "news"); 这句之前把连接打开,你开的太晚
      

  9.   

    DataSet ds = new DataSet();   
    DataRow dr=ds.Tables["news"].NewRow();ds中没有news这个表,当前ds是一个新的实例,没有数据
      

  10.   

    用我六楼的建议试了吗?你的SQL语句参数都没有看到赋值啊。
    cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
    这不是给参数赋值,只是定义了参数的名称,类型,长度,字段名
      

  11.   

    Connection那样open()起作用么?这个还真没试过,在上面创建完连接时就open()一下试试吧!“@id没有默认值。”,这很明显是“cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");”这儿的问题,你看下cmm.Parameters添加时的参数说明吧,还有可能再就是向数据库中插入时没有值,你先给个固定值试一下吧!