怎么解决ExecuteNonQuery()至少一个参数没有被指定值。

时间:2021-03-20 18:34:20
用asp.net写了个web程序,需要对数据库进行更新(Update),但是老出这个错误,
更新代码如下:
protected void Button1_Click(object sender, EventArgs e)
    {
        string str_id="" + Request.QueryString["id"];
        string str_nami =this. NewNameInput.Text;
        string str_jinsi = this.JinsiInput.Text;
        string str_mezmuni = this.MeaningInput.Text;
        string str_tili = this.LangInput.Text;
        string str_pigchisi = this.CnNameInput.Text;
        string str_aptori = this.ByNameInput.Text;
        string con_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(".") + "//App_Data//NameDB.mdb";
        OleDbConnection base_con = new OleDbConnection(con_str);
        base_con.Open();
        string cmd_str = "update [T_NamesInfo] set E_Name='" + str_nami + "',E_Sex='" + str_jinsi + "',E_Meaning='" + str_mezmuni + "',E_Lang='" + str_tili + "',E_CnName='" + str_pigchisi + "',E_By='" + str_aptori + "'  where id=" + str_id;
        OleDbCommand odbcmd = new OleDbCommand(cmd_str, base_con);
        if (odbcmd.ExecuteNonQuery() > 0)
        {
            base_con.Close();
            Response.Write("<script>alert('update finish!')</script>");
        }
        else
        {
            base_con.Close();
            Response.Write("<script>alert('faild!!')</script>");
        }


    }


错误截图如下
怎么解决ExecuteNonQuery()至少一个参数没有被指定值。

15 个解决方案

#1


  string cmd_str = "update [T_NamesInfo] set E_Name='" + str_nami + "',E_Sex='" + str_jinsi + "',E_Meaning='" + str_mezmuni + "',E_Lang='" + str_tili + "',E_CnName='" + str_pigchisi + "',E_By='" + str_aptori + "'  where [id]=" + str_id;
string.format
oledbparameter操作

#2


引用 1 楼 wuyq11 的回复:
  string cmd_str = "update [T_NamesInfo] set E_Name='" + str_nami + "',E_Sex='" + str_jinsi + "',E_Meaning='" + str_mezmuni + "',E_Lang='" + str_tili + "',E_CnName='" + str_pigchisi + "',E_By='" + st……

你可以说具体点么???

#3


看看你的那些字段哪些不允许为空.。 你调试的时候把鼠标移到 string cmd_str上面将SQL拿出来到数据库里面去执行一遍...   应该是某字段为空或着,int型打了单引号,或者是该打单引号的地方你没打.。  比如你这里的str_id是string型...

#4


where [id]

#5


引用 3 楼 yj5723187 的回复:
看看你的那些字段哪些不允许为空.。 你调试的时候把鼠标移到 string cmd_str上面将SQL拿出来到数据库里面去执行一遍...   应该是某字段为空或着,int型打了单引号,或者是该打单引号的地方你没打.。  比如你这里的str_id是string型...

更新字段都允许为空的,我用断点法都看了,都不是空的。
那个打单引号双引号的你看看,我哪儿打错了?

#6


引用 4 楼 wuyq11 的回复:
where [id]

试了,没用了...

#7


报的啥错呀。

#8


引用 7 楼 begintransaction 的回复:
报的啥错呀。


没有报错,可以正常运行网站的,但是在网站页面做更新(Update)操作就不同了,出现的是上面的那张图所显示.

#9


强制转换数据类型

#10


引用 9 楼 hu6901582 的回复:
强制转换数据类型

怎么转换啊 ???

#11


<add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/>  
 OleDbConnection connection = new OleDbConnection(connectionString); 
检查参数类型。cmd_str 值

#12


写错字段名称没有?

一个个字段缩小,用排除法。

#13


引用 12 楼 winner2050 的回复:
写错字段名称没有?

一个个字段缩小,用排除法。

都试了..

#14


引用 11 楼 wuyq11 的回复:
<add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/>  
 OleDbConnection connection = new OleDbConnectio……


断点法看了
cmd_str=update [T_NamesInfo] set E_Sex = '男' where [id]=1
正常吧...

#15


都解决了。。。谢谢各位i

#1


  string cmd_str = "update [T_NamesInfo] set E_Name='" + str_nami + "',E_Sex='" + str_jinsi + "',E_Meaning='" + str_mezmuni + "',E_Lang='" + str_tili + "',E_CnName='" + str_pigchisi + "',E_By='" + str_aptori + "'  where [id]=" + str_id;
string.format
oledbparameter操作

#2


引用 1 楼 wuyq11 的回复:
  string cmd_str = "update [T_NamesInfo] set E_Name='" + str_nami + "',E_Sex='" + str_jinsi + "',E_Meaning='" + str_mezmuni + "',E_Lang='" + str_tili + "',E_CnName='" + str_pigchisi + "',E_By='" + st……

你可以说具体点么???

#3


看看你的那些字段哪些不允许为空.。 你调试的时候把鼠标移到 string cmd_str上面将SQL拿出来到数据库里面去执行一遍...   应该是某字段为空或着,int型打了单引号,或者是该打单引号的地方你没打.。  比如你这里的str_id是string型...

#4


where [id]

#5


引用 3 楼 yj5723187 的回复:
看看你的那些字段哪些不允许为空.。 你调试的时候把鼠标移到 string cmd_str上面将SQL拿出来到数据库里面去执行一遍...   应该是某字段为空或着,int型打了单引号,或者是该打单引号的地方你没打.。  比如你这里的str_id是string型...

更新字段都允许为空的,我用断点法都看了,都不是空的。
那个打单引号双引号的你看看,我哪儿打错了?

#6


引用 4 楼 wuyq11 的回复:
where [id]

试了,没用了...

#7


报的啥错呀。

#8


引用 7 楼 begintransaction 的回复:
报的啥错呀。


没有报错,可以正常运行网站的,但是在网站页面做更新(Update)操作就不同了,出现的是上面的那张图所显示.

#9


强制转换数据类型

#10


引用 9 楼 hu6901582 的回复:
强制转换数据类型

怎么转换啊 ???

#11


<add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/>  
 OleDbConnection connection = new OleDbConnection(connectionString); 
检查参数类型。cmd_str 值

#12


写错字段名称没有?

一个个字段缩小,用排除法。

#13


引用 12 楼 winner2050 的回复:
写错字段名称没有?

一个个字段缩小,用排除法。

都试了..

#14


引用 11 楼 wuyq11 的回复:
<add name="accessConnStr" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source= |DataDirectory|a.mdb" providerName="System.Data.OleDb"/>  
 OleDbConnection connection = new OleDbConnectio……


断点法看了
cmd_str=update [T_NamesInfo] set E_Sex = '男' where [id]=1
正常吧...

#15


都解决了。。。谢谢各位i