UPDATE过程中 标准表达式中数据类型不匹配
AboutID = Request.QueryString["ID"].ToString();
Socut.Data.ExecuteNonQuery("UPDATE NwebCn_About set AboutName='" + AboutName.Text + "' where ID='" + AboutID + "'");
不知道为什么总是提示“标准表达式中数据类型不匹配”,在网上查询了很久都没有找到答案。我不用Socut这个组件,直接用OleDbCommand myCommand = new OleDbCommand(sqlstr,conn);  同样出现这样的错误,所以我肯定不是Socut这个组件的问题。不知道大家遇到这个问题,是怎么解决的。网上有很多帖子都说ACCESS就存在这样的问题,SQL就不会。这是为什么呢?

解决方案 »

  1.   

    UPDATE   NwebCn_About   set   AboutName='"  &   AboutName.Text   &   "'   where   ID="   &  AboutID\你把这个放到分析器中看过不过
      

  2.   

    你的ID是数据型,数据型的不要用  ID='"   +   AboutID   +   "'"
    数据型 不要和引号连在一起
    直接用“ID=” & aboutID 
    就可以了。
      

  3.   

    Socut.Data.ExecuteNonQuery("UPDATE NwebCn_About set AboutName='" + AboutName.Text + "' where ID=" & AboutID);改成这样提示    "&"无法应用于“string”
      

  4.   

    你的ID在数据库是什么类型?如果是整型 改为
    int AboutID=Convert.toint32(Request.QueryString["ID"].ToString()); 
      

  5.   

    Socut.Data.ExecuteNonQuery("UPDATE   NwebCn_About   set   AboutName='"   +   AboutName.Text   +   "'   where   ID="   +   AboutID); 在获取AboutID的时候.你就已经错误了.如果没有值.那AboutID就是""空字符串.sql语句就报错.
    代码要写的健壮些.
    非要用这种写法吗?换个方式一样的.
    SqlCommand comm = new SqlCommand("UPDATE NwebCn_About set AboutName=@name where ID=@aboutid");
    comm.Parameters.add("@name",SqlDbType.varchar,50).value = AboutName.Text;
    comm.Parameters.add("@aboutid",SqlDbType.int).value = AboutID;
      

  6.   

    jieqimini2008这种方法我试过了,没用的。还是谢谢你gogo8848这种方法很好啊,我还没试,不过又学了一招,谢谢你啊,我马上试试,然后告诉大家。
      

  7.   

       
    int ID = Convert.ToInt16(AboutID);
    conn = db.GetConn();
    OleDbCommand comm = new OleDbCommand("UPDATE NwebCn_About set AboutName=@name where ID=@aboutid", conn);
    comm.Parameters.Add("@name",OleDbType.VarChar,50).Value=AboutName.Text;
    comm.Parameters.Add("@aboutid",OleDbType.Integer).Value=ID;
    comm.ExecuteNonQuery();提示:输入字符串的格式不正确对了,这个ID是主键 自动编号的。ACCESS数据库。
      

  8.   

    int ID = Convert.ToInt32(AboutID);
    conn = db.GetConn();
    OleDbCommand comm = new OleDbCommand("UPDATE NwebCn_About set AboutName=@name where ID=@aboutid", conn);
    comm.Parameters.Add("@name",DbType.string).Value=AboutName.Text;
    comm.Parameters.Add("@aboutid",DbType.Integer).Value=ID;
    comm.ExecuteNonQuery();
    或者再把‘@’改为‘:’(不知道access参数的标记是什么)
      

  9.   

    问题解决了。原来是aboutID没有值,因为我把它放在        if (!IsPostBack)
            {            AboutID = Request.QueryString["ID"].ToString();
            }所以不能回传了。所以在按钮事件里面就不能调用aboutid了。所以就出问题了。自己真是笨死了。