本来程序已经运行正常了,想给表加个自增的ID列,做主键,原来的主键是col1,varchar的,查询语句是:select * from table1 where col1=DropDownList1.selectedItem.Text,然后SqlDataAdapter(fill,table1)没问题,加了ID列之后SqlDataAdapter(fill,table1)就报错了。报的就是“将varchar值 "**" 转换为数据类型为 int 的列时发生语法错误”,怪了。请高手帮忙解决一下

解决方案 »

  1.   

    col1=DropDownList1.selectedItem.Text==>col1='"+ DropDownList1.selectedItem.Text +"'"
      

  2.   

    table1 是不是强类型?
    如果不是,只有跟踪sql了.
      

  3.   

    那肯定是你的DropDownList1.selectedItem.Text里面有"**"值,"**"怎么可能转化为INT型的嘛,就算转化了也查不到撒,所以你的赋值有问题
      

  4.   

    如果是VB.NET的语法不要用“+“连接字符要用“&”比较好!
      

  5.   

    将varchar值 "**" 转换为数据类型为 int 的列时发生语法错误上面“**”的值,所属的列根本就是varchar型的,跟int没有关系,不知道怎么会有这种问题对了col1原来的名字叫做ID,后来改成col1是varchar型,而新建的列就用ID的名字,是int型,不知道会不会跟这个有关,可是我已经刷新数据库联接,datset也删除了,重新再建的晕那现在删除了ID列,col1也没有该名字,还是同样的错误,郁闷了
      

  6.   

    很简单嘛int的值插入数据库的时候。如果数据库的字段为nchar型的话。它插进去就是以*来表示。你要在返回来转化的话就成了*转化成int型。所以。别个认不出来就报错了。
      

  7.   

    to xiahouwen:不好意思,我看没明白你的意思
    to cpp2017: 不懂什么是强类型,就是普通的表,我想应该不是
    to liaoxin009:俺没有让他转化为int型,是他自己要转的,不晓得什么原因
    to zyb1235:是c#的,之前用的都没有问题,应该不是连接符的问题
      

  8.   

    datset也删除了,重新再建的
    ===============
    是通过添加xsd文件建的?
      

  9.   

    你要把数据库的nchar型该成int型。然后写代码
    try
    {select * from table1 where col1= Convert.ToInt64(DropDownList1.selectedItem.Text)
    catch(format异常 e)
    {e.tostring();}
      

  10.   

    你的DataSet应该是强类型的.即有DataTable中有每个字段的类型,长度等描述.解决方法还是重新构建DataSet.你可以检查一下xsd的字段描述,与数据库中是否一致
      

  11.   

    对,是添加xsd文件,再把表加进去。又试了一遍,还是不行现在把表和程序都改回原来运行正确的状态,还是报这个错,真是多此一举
      

  12.   

    原因很可能就是
    DataTable的结构跟取到的值的类型对不上,填充时出错.
      

  13.   

    现在是select ID from table 可以实现,不报错
    select * from table where ID=** 就报错,ID已经改回varchar类型,还是报原来的错
    ds我看了,字段描述没有问题