请问各位高手,我想控制错误提示,我做一个小程序实现的功能是指定数据库下的指定表存在就正常,如果指定数据库下的指定数据表不存在就给出错误提示此表不存在,而我做的是给出系统的提示错误信息,不知道我的代码错在哪里,请指教
try
with adoquery1 dobegin
   close;
   sql.clear;
   sql.add('if exists(select * from sysobjects where  name=''t_bus'' And xtype=''u'')');
sql.add('select * from t_bus');
open;
showmessage('此表存在');
end;
except
showmessage('此表不存在');
如何改正,

解决方案 »

  1.   

    except
      on e:exception do
        showmessage(e.message);
    end; 
    英文的错误提示!
      

  2.   

    我改了改,看行不?procedure TForm1.Button1Click(Sender: TObject);
    begin
    try
    with adoquery1 dobegin
       close;
       sql.clear;
       sql.add('select * from sysobjects where  name=''t_bus'' And xtype=''u''');
      open;
      First;
      if not eof then
      showmessage('此表存在')
      else
         showmessage('此表不存在');
    end;
    except
      showmessage('查询出错!');
    end;
    end;
      

  3.   

    ....
    sql.add('select * from sysobjects where  name=''t_bus'' And xtype=''u''');
    open;
    if adoquery1.recordcount>0 then
       showmessage('此表存在')
    else
       showmessage('此表不存在');
    还是用
    adoconnection1.GetTableNames(combobox1.items,false);
    判断一下
       
      

  4.   

    如果表不存在,你用Open会出现异常,后面的语句就无法执行,也就不能执行你的if...else语句,这样写的可以显示所有的异常,不用在调试环境下看。
    Try
      open;
    except
      on e:exception do
        showmessage(e.message);
    end;
      

  5.   

    我以前见过SQL执行错误异常的编码及英文信息对照表,你可以找一下有关资料,做成一张编码-中文错误信息对照表,这对你数据库编程很有用处。
      

  6.   

    小虫的方法比较可行,quety.sql中好像不能使用transact-SQL语句,如果想简单一点:
    Try
      open;
    except
      execsql;
    end;
    就好了。
      

  7.   

    如果我是动态输入数据库名称,不是固定的数据库,我在窗体放入一个EDIT控件,此控件用于输入数据库名称的,这样就只能运行一次,我在上面加入如下代码,不知错在哪里
    adoquery1.connectionstring:='';
    adoquery1.connectionstring:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='''+edit1.text+''';Data Source=WWW-A6X0D1T7LH2';将如何改正,请各位高手指教