今天去面试,看了我做的东西,我说做了10天,面试的人说做的时间太长了。晕倒~然后他叫我写一个程序,考查一下我的SQL的掌握程度:写一个类似于查询分析器一样的工具软件,能供判断SQL语法语法是否正确!比如:select * from table where       selet A.*,B.* from A Inner Join B on上边的两个语句都是有问题的,我写的程序应该提示语法有错误!注:这是工具软件,是不需要连接到数据源提供者的。大哥们给个思路!从来没有做过这样的程序!!

解决方案 »

  1.   

    你应该对SQL很了解才行,然后根据每个动词里边的参数,来判断,我只能说这两天尽力的帮你写写看了!
      

  2.   

    介绍一个函数Split,它返回一个下标从零开始的一维数组,可以帮助你将SQL语名分解,以后的语言判断就要看你的了,希望这个提示能帮上你,为VB程序员加油!
      

  3.   

    晕。SPLIT只能将分隔的字符分开存在数组中。select colA as A这种情况!!!select ColA as [my col]这种情况呢!!!!郁闷死了!!!!!!!!才开始要做程序员面试就遇到这种问题!!!!!
      

  4.   

    http://61.185.208.28/shxhark/sqlexplorer.html
    http://www.quanye.com/
    http://www.csdn.net/cnshare/soft/15/15227.shtm
    http://www.aspenterprisemanager.comhttp://www.freevbcode.com
    http://www.sqleditor.com
      

  5.   

    楼上的在说什么啊?跟编译原理什么关系!!!!就是自已写代码判断用户输入的SQL语句的语法是否正确。且明确一点,并不是将SQL语句提交到数据源提供者(SQL SERVER,ORACLE,SYBASE,ACCESS)去让它们返回错误提示!!!!!!
      

  6.   

    http://www.csdn.net/cnshare/soft/15/15227.shtm
      

  7.   

    简直是欺负人,这样的工作不要也罢,不连接数据库用出错判断2天内搞定,我保证连微软的工程师都要头痛,要知道SQL的语法有多复杂,你学习都要花一年的时间,何况是判断!!
      

  8.   

    如果说只是简单的!他说要实现:
    select
    insert
    update
    create table
    create proc
    create index
    insert into ..select.....
    假设以上程序都只是针对一个表的,各位有什么好的方法?
      

  9.   

    只能提示一下,
    以 select句子为例,分析整个字符串,
    select 关键字记为A
    as 关键字记为B
    from 关键字记为C
    其他记为D
    最后分析结果是ADCD或者ADBDCD或者AD,DBD,DCD格式的就是语法正确的
    像ADBDC就是错误的漏了from后面的表名
    不知道楼主能不能明白。
    这个是编译原理的语法分析问题,隔的久了,大学里编译原理的课程设计就是做的c程序的语法分析器
      

  10.   

    先提个简单点的思路
    按关键字来区分,括号内的递归下次处理
    例如select * from (select * from table1)
    那么就处理select * from ....
    再处理select * from table1
    当中的语句再进行细分化处理
      

  11.   

    如果说只是简单的!他说要实现:
    select
    insert
    update
    create table
    create proc
    create index
    insert into ..select.....
    假设以上程序都只是针对一个表的,各位有什么好的方法?过路人.如果就是上面几条的话,不知道用空格区分合不合你意,,取前面的数,,到空格,再分组,LOOP判断,
    select xx from xxx   ,,Y
    select x x from xx x ,,Y
    select from xxx      ,,N
    select xx from       ,,N
    嘿嘿,,到时你就表演这几条给他看看算了,,,   就是那些表名,字段名也可以带空格,麻烦点,
    临场磨刀上,,UPing
      

  12.   

    同意victorycyz(中海) 的观点
    给我30天也写不完.
      

  13.   

    这个确实是编译原理的问题,如果把SQL语法的各种情况都考虑到,相当于实现了编译的语法检查,不可能两三天解决
      

  14.   

    要检查几个固定的语句还差不多,要是检查他随便写的一条语句那就有点难度了,至少你要SQL语句十分了解。还要考虑到这样那样的组合。我这水平是帮不上你了。实在抱歉。帮你顶一下。
      

  15.   

    正则表达式能实现比较简易的sql语法检查功能,请搜索csdn文档中心,有一篇这样的文章,不过好像不是vb的
      

  16.   

    1.建立一个空ACCESS数据库.
    2.临时生成ACCESS数据表.
    3.执行该SQL语句.
    4.将错误码返回.
      

  17.   

    3天写个SQL语法解析器,杀了我是算了!楼主说的那个高人,一天写4000行代码,真是牛X大了,叫他一天打字打个4000行看看,是写代码啊,要有设计思想,要调试的呀,摆明是在耍哥们你嘛!
    郁闷ing,难道VB程序员就天生要受人欺负和歧视?不爽啊!
      

  18.   

    T0:MSTOP,
    他说啦,不要连数据库,要不都可以直接捕获错误来处理啦!
      

  19.   

    回复人: xuwuyu(飘渺风) ( ) 信誉:99  2004-10-21 11:01:00  得分: 0     T0:MSTOP,
    他说啦,不要连数据库,要不都可以直接捕获错误来处理啦!
     
    '---------------------------------------------------------
    其实,对一个问题产生难道和恐慌心理的根源是你找不到解决该问题的方法..'他说啦,不要连数据库,要不都可以直接捕获错误来处理啦!'
    1.不要连接数据库,我只是在代码中动态生成一个数据库而已...换句话说,生成的数据库只是一个中间物,我们借助它可能解决很多问题.
    2.不可能使用错误捕获..
    你自已想一想吧,VB中和数据库中定义的错误有多少??几千条,几万条??还是更多..不用捕捉,一条条判断??又不能用数据库??如果这样,你大可将面试你的这个家伙 嘲弄一翻  然后离开.因为,他也不可能...
    3.你提供的只是EXE文件.内部如何处理的是我的事,我完成就行了.现在不是在考试,没有这么多条框框.话又说回来,考你的这个家伙水平一定不会怎么样,我敢肯定地说. 
      

  20.   

    以已之长度人之短者,一定不是高手.
    如果按他的考人思路,叫CSDN中随便一个人来考考他,一样可以将他考死.
      

  21.   

    觉得出这个题的人没有搞对问题,就好像对一个显卡销售员说你说你对各种显卡都非常的了解那么你
    给我写一个显卡驱动程序出来。又像我说我对sql非常非常的熟为了证明给你看于是拿出一堆我用过的
    sql安装盘。同时怀疑那4000行程序是不是一堆if then else的正确sql格式的穷举判断
      

  22.   

    我比较赞同楼上的观点
    1.建立一个空ACCESS数据库.
    2.临时生成ACCESS数据表.
    3.执行该SQL语句.
    4.将错误码返回.
      

  23.   

    如果我可以一天写4000行,作个SQL分析器.可能离去微软不远了.
      

  24.   

    兄弟没法帮你! 怎么就不是考VC 或者JAVA呢?
    VB 我们研究学习的都不够久 ! 哎 !  郁闷啊!
    加油吧 !大家一起努力!
      

  25.   

    难  不象在招聘  相当于作了一个sqlserver系统的语法监测内核 如果硬写 会痛苦些但好像有一个算法 叫什么来着  记不太清楚了 editplus 里面就用到了那种算法
      

  26.   

    这个东西三天写的出吗?
    那家公司应该这样出题,“写一个程序,由用户输入一句话,然后由程序判断这句话是否通顺或合理。”
    他们以为是判断四则运算吗,是SQL语法那么多,变化又那么大,真要写,应该是能写出来的,关键是工作量太大了,恐怕一个人不是一两个月能做出来的