m_StrCmd="Update [T_ManagerNewestTop] Set [F_Description]='"+m_StrSqlTemp+"'"这是一个SQL语句,其中变量m_StrSqlTemp有超过8000个字符,所以在执行的时候语句就被截断了请问有什么办法也可以将这条记录更新到数据库呢?
条件:
1.不用存储过程.
2.数据库是Access的.
3.只要能把该数据更新到数据库里面就行.
有没有办法...

解决方案 »

  1.   

    F_Description字段是什么类型,最好改成是备注类型
      

  2.   

    本来就是备注的类型了!问题不是字段的类型不够长,而是sql语句不能支持那么长的咯!
      

  3.   

    只能截断长字符串为各个短字符串,然后多次分别添加了:
    for (int i=0,i<m_StrSqlTemp.LenXXX,i++)
    {
    m_StrCmd="Update [T_ManagerNewestTop] Set [F_Description]=[F_Description]+'"+m_StrSqlTemp[i]+"'"
    ...执行...
    }
      

  4.   

    晕,这么长。可以使用楼上的方法。
    如果是SQL 2005,使用SQL CLR
      

  5.   

    对,我在测试别人的一个项目的时候,也遇到过这样的问题。不是因为C#的字符串变量的容量溢出了,就是因为SQL语句不能支持这么长的常量。
      

  6.   

    就没更好的办法了吗?在C#里面没有类似asp里面的rs("字段名")=参数-->rs.update的写法吗?
      

  7.   

    public string StringSub(string a,int b)
    {
    if (a.Length > b)
    {
                   
    string  i= a.Substring(0,b)+" ...";
    return i;
    }
    return a;
    }
    绑定里写这个
    StringSub(DataBinder.Eval(Container,"DataItem.territory").ToString(),135)
     territory 是数据库里的字段名   , 135 是限制字符长读度
      

  8.   

    如果超出这个字符怎么办那??程序就会报错误.不过access中还有个备注类型,长度为65535 如果用oledb 中sql语句来写的话就是以下拉.
    create table test
    (
    id int,
    aa memo
    ) 其中memo就表示备注类型拉.哈哈