错误信息: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();
红色代码出出错。
代码:
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();
OleDbDataAdapter的insertcommand现在为OleDbCommand,selectcommand为空,所以出错
OleDbDataAdapter的insertcommand现在为OleDbCommand,selectcommand为空,所以出错
你没SELECT数据出来,如何da.Fill(ds, "news"); (没有数据如何绑定至ds)
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;
其它的以此类推。
这行去掉就好了。
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();
}
DataRow dr=ds.Tables["news"].NewRow();ds中没有news这个表,当前ds是一个新的实例,没有数据
cmm.Parameters.Add("@id",OleDbType.Integer ,10,"fld_id");
这不是给参数赋值,只是定义了参数的名称,类型,长度,字段名