大家帮我看一下以下语句有什么错误,谢谢!老是提示System.Data.OleDb.OleDbException: ')' 附近有语法错误。
adpt1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM customer WHERE (ID>" + txtNo.Text.Trim()+ ")", conn1);
ID是uniqueidentifier类型,txtNo.Text="0"
唉,被这么简单的问题难倒了!
在SQL SERVER中查询没错,但是在程序里却有错!
错误信息:System.Data.OleDb.OleDbException: ')' 附近有语法错误。改成:
adpt1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM customer WHERE [ID]>" + txtNo.Text.Trim(), conn1); 
错误信息:System.Data.OleDb.OleDbException: '>' 附近有语法错误。改成:
adpt1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM customer WHERE [ID]>" + Convert.ToInt32(txtNo.Text.Trim()), conn1); 
错误信息:System.FormatException: 输入字符串的格式不正确。唉,被这么简单的问题难倒了!
请高人指点!

解决方案 »

  1.   

    ...("select * from customer where [ID] > " + txtNo.Text.Trim(), conn1);
    注意,txtNo.Text必须是整数字符串
      

  2.   

    你的txtNo.Text.Trim()肯定是一个空字符串,所以在Convert.ToInt32()转换是会报输入字符串的格式不正确错误
    if (!String.IsNullOrEmpty(txtNo.Text.Trim()))
         adpt1 = new System.Data.OleDb.OleDbDataAdapter(string.Format("SELECT * FROM customer WHERE [ID]>{0}",txtNo.Text.Trim()), conn1); 
      

  3.   

    <asp:TextBox ID="txtNo" Text="0" Width="68" runat="server"></asp:TextBox>
    怎么会错呢,奇怪,是不是要在SQL语句中转换为int类型啊?但转换函数是?
      

  4.   

    你的“txtNo.Text.Trim()”的值是什么类型的。如果是string或为空的话,都会报错了。
      

  5.   

    ID是uniqueidentifier类型的话,在C#中应用Guid来传的,GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),如果你没报')'附近错误,也会报红色部分错误的
    GUID类型没法比大小,只能比相等或者不相等
      

  6.   

    txtNo.Text.Trim()
    这一句应该不是你说的等于"0"吧。
    你直接把txtNo.Text.Trim() 替换成0,看看是不是不报错了。
      

  7.   

    如果你的ID是引用A表的话,你可以利用A表的name当作条件,取到ID,然后与你操作表比较
    如果不是的话就没法了
    一般Guid类型都是当作主键的
      

  8.   

    adpt1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM customer WHERE (ID>" + txtNo.Text.Trim()+ ")", conn1); 
    试试下面的,
    你的应该少了一对单引号adpt1 = new System.Data.OleDb.OleDbDataAdapter(
    string.format("SELECT * FROM customer WHERE (ID>'{0}')",txtNo.Text.Trim() ), conn1); 
      

  9.   

    你的你的SQL语句换为:
    ("SELECT * FROM customer WHERE (ID>'" + txtNo.Text.Trim()+ "')"这样试试,你就知道真正的错误在哪了
      

  10.   

    ("SELECT * FROM customer WHERE (ID>'" + txtNo.Text.Trim()+"=""'?0:int.Parse( txtNo.Text.Trim())
      

  11.   

    adpt1 = new System.Data.OleDb.OleDbDataAdapter(
    string.format("SELECT * FROM customer WHERE (ID>'{0}')",txtNo.Text.Trim() ), conn1); 
    试了一下可以的!
      

  12.   

    这么多人都没看ID是uniqueidentifier类型?
    负责点自己在查询分析器里面建一个表,加一个uniqueidentifier类型的字段,然后自己在查询语句里面写
    字段='0'试试看会不会报:将字符串转换为 uniqueidentifier 时失败。
    LZ也不用测SQL了,直接在数据库里面测试一下直接当0传进去看看会不会错就知道了
      

  13.   

    加一个判断语句:
    if(txtNo.Text.Trim() != "")
    {   adpt1 = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM customer WHERE (ID>" + txtNo.Text.Trim()+ ")", conn1); 
    ...}