CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

在开一贴送分, 只要告诉明白我就行

楼主iorizht(风一样的感觉)2004-12-01 13:42:22 在 Delphi / 数据库相关 提问

怎么样用代码执行sql脚本?? 问题点数:100、回复次数:23Top

1 楼XXSingle(心无了然)回复于 2004-12-01 13:44:43 得分 0

不懂什么意思Top

2 楼Firec(Firec)回复于 2004-12-01 13:47:20 得分 20

脚本文件其实就是文本文件,用String把文件读进来再赋给TQUERY下的SQL,执行,OKTop

3 楼bee2518(迷茫ing)回复于 2004-12-01 13:53:37 得分 30

建成一个bat批处理文件,然后执行这个bat文件就可以执行SQL脚本了  
  附上SQL   SERVER脚本的格式:  
   
  isqlw   /S   (local)   /d   数据库名称   /U   用户名   /P   密码   /i   .\sql.sql   /o   .\s.txt  
   
  其中.\sql.sql是输入文件  
  s.txt为输出文件  
  把该文件保存为一个bat文件,Top

4 楼wood_ke(天煞孤星)回复于 2004-12-01 14:04:18 得分 10

先把数据库中导出脚本为.sql的文件  
  用osql来执行,在delphi中用winexe函数来调用  
  winexe('osql   …………‘,1);  
  就ok了Top

5 楼mythursday888()回复于 2004-12-01 14:08:37 得分 0

upTop

6 楼GoldShield(李柏岑)回复于 2004-12-01 14:18:17 得分 0

讲明白一点啊.CSDN是找一下吧.说不定都有了Top

7 楼lzy6204(为了忘却的记忆)回复于 2004-12-01 14:24:25 得分 0

讲明白一点啊  
  是不是说嵌入式SQL语句啊Top

8 楼Erice(白雪公猪)回复于 2004-12-01 14:28:48 得分 10

isqlw   /S   (local)   /d   数据库名称   /U   用户名   /P   密码   /i   .\sql.sql   /o   .\s.txt  
   
  bee2518(迷茫ing)说的对!!  
   
  用WINEXEC来调用上述代码,,其实是在DOS下调用SQL   SERVER的“查询分析器”来装载sql脚本Top

9 楼bigben2008(ben)回复于 2004-12-01 14:49:51 得分 10

只要你愿意,你可以:  
  从网页上输入一条SQL语句,然后执行它;  
  从应用程序的界面接受SQL语句的输入然后执行它;  
  从应用程序打开一个脚本然后执行它;  
  创建一个任务让SQLServer自己执行它;  
  关键在于,你想干什么?Top

10 楼SampsonDyh(【 戴尔斐 】)回复于 2004-12-01 14:53:44 得分 0

ADOQuery1.SQL.Add('Select   *   from   表1');  
  ADOQuery1.Open   ;Top

11 楼pengxuan(网虫先生)回复于 2004-12-01 15:00:51 得分 0

ADOQuery1.SQL.Add('Select   *   from   表1');  
  ADOQuery1.Open   ;  
  Top

12 楼hellolongbin(一个人(自从扩充话题改版,再也不去灌水乐园了))回复于 2004-12-01 15:16:13 得分 0

读出批处理中的内容,传给AdoQuery.SqlTop

13 楼sayhi(sayhi)回复于 2004-12-01 15:19:44 得分 0

不明白楼主要实现什么/Top

14 楼wenjianyao(建)回复于 2004-12-01 15:36:25 得分 0

ADOQuery1.close  
  ADOQuery1.sql.clear  
  ADOQuery1.SQL.Add('Select   *   from   表1');  
  ADOQuery1.Open   ;  
  Top

15 楼iorizht(风一样的感觉)回复于 2004-12-02 13:54:05 得分 0

哈哈,什么样的答案都有啊,我想做年度结转,当结转的时候生成个新数据库和原来数据库有一样的表结构,所以我把原来数据库做了个sql脚本,这个脚本一执行就可以生成新的表结构而没有记录了,然后在考虑往这个新库的表中添加符合条件的记录,也不知道这个思路对不对,昨天遇到的问题我就是不会用代码执行sql脚本文件,呵呵,   大家在看看我的思路对不对,欢迎讨论,然后我结帖。Top

16 楼xx_adam(一无所有)回复于 2004-12-02 14:10:59 得分 0

 
   
      exec   select   ....Top

17 楼windy_224(边Cheng浪子)回复于 2004-12-02 14:15:14 得分 0

哦……我不懂……  
  关注……Top

18 楼iorizht(风一样的感觉)回复于 2004-12-02 14:18:52 得分 0

我找到执行sql脚本的代码了,   就象firec说的,其实也没什么难度,就是以前没见过,我贴上来先。  
   
   
  在处理MSDE一些操作中。需要执行一些SQL脚本。有的是从  
  SQLServer   2000中生成的SQL为后缀的脚本。在MSDE中没有企业管理器,  
  操作都是在程序中完成的。所以用以下函数来执行SQL脚本。  
   
  //执行一个SQL角本文件,文件只能是ANSI编码的。  
  //如果文件是UNICODE编码的话,则会乱码。  
  var  
      s:string;  
      sqltext   :   string;  
      sqlfile   :   TextFile;  
  begin  
      if   OpenDialog1.Execute   then  
      begin  
          AssignFile(sqlfile,   OpenDialog1.FileName);  
          FileMode   :=   0;  
          Reset(sqlfile);  
          try  
              ADOConnection1.BeginTrans;  
              while   not   eof(sqlfile)   do  
              begin  
                  Readln(sqlfile,   s);  
                  sqltext:=s;  
                  while   (not   eof(sqlfile))   and    
                  (uppercase(trim(s))<>'GO')   do  
                  begin  
                      Readln(sqlfile,   s);  
                      if   (uppercase(trim(s))<>'GO')   then  
                          sqltext:=sqltext+'   '+s;  
                  end;  
                  adoquery1.Close;  
                  adoquery1.SQL.Clear;  
                  adoquery1.SQL.Add(sqltext);  
                  adoquery1.ExecSQL;  
              end;  
              CloseFile(sqlfile);  
              ADOConnection1.CommitTrans;  
              application.MessageBox('SQL角本完成!',  
                  '提示',MB_OK+MB_ICONINFORMATION);  
          except  
              raise   exception.Create('SQL角本执行失败!');  
              ADOConnection1.RollbackTrans;  
          end;  
      end;  
  end;  
   
  其中:ADOConnection1,adoquery1,OpenDialog1都是窗口中放置的控件。可以将之设为局部变量,在本函数内创建和消毁。  
   
  20:03:52  
   
   
   
   
  Top

19 楼36(蛀虫写手)回复于 2004-12-02 14:18:53 得分 0

年度结转需要新建数据库????  
  没必要吧,以后查询数据杂拌????太麻烦了吧Top

20 楼iorizht(风一样的感觉)回复于 2004-12-02 14:21:02 得分 0

客户要求这样啊,一个年度的对应一个年度的数据库,查询数据的时候在登陆的时候选择年份然后查询此年已经完成的业务,要不你说咋办?Top

21 楼36(蛀虫写手)回复于 2004-12-02 14:27:51 得分 0

那他不处理跨年度的数据????Top

22 楼longtusoft(神灯之主)回复于 2004-12-02 15:10:47 得分 0

顶Top

23 楼Changefish(小翼【嘘。。。别出声!我是从80端口进来的】)回复于 2004-12-02 17:07:10 得分 20

原理对的   多个帐套Top

相关问题

  • 我不明白,谁能告诉我??
  • DxDbGrid到底是什么啊,找了一下午没搞明白,郁闷,谁能最详细的告诉我,我马上给他100分.还有在哪下载?
  • 不明白?? 在 HTML 中 FORM 會与上一部分空上一行是不????
  • 有一个问题不太明白。能帮忙的麻烦告诉一下!!
  • 关于Visualstudio.NET2003的软件的问题明白的告诉我一下。
  • 不明白分数还有什么用
  • 明白了就加分,关于win2000的。
  • vb+asp.net分页搞不明白
  • 新手,搞不明白,来者有分
  • 十分不明白的问题

关键词

  • 脚本
  • 执行
  • 文件
  • 数据库
  • 函数
  • 语句
  • 代码
  • 查询
  • sql
  • sqlfile

得分解答快速导航

  • 帖主:iorizht
  • Firec
  • bee2518
  • wood_ke
  • Erice
  • bigben2008
  • Changefish

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo