建立数据库结构的两种方法

原创 2004年08月24日 10:43:00

Q:
 现在我的情况是: 已经安装了SQL SERVER,我自己做个安装程序(当然用DELPHI编写),
 需要在SQL上建立一个名称为MyServer1的数据库,然后对该数据库使用已经有的三个
 .SQL语句创建结构,应该怎么实现? 如果有人能解决问题,愿意再加200分!

方法一:

------------------------------------------------------------------------------------------
我作过类似的东西,而且很多国内出名软件企业也用相同方法。
可以作一个外挂配置程序,或作在本程序内(要非常严谨)
1:连接Master.如不成功报错退出。
2:在Master里执行建库操作
   if not exists (Select * from sysdatabases where Name = 'TestServer' )
   Create Database TestServer
3: 连接TestServe,在其中建用户,建表,
   参考方法:SQL语句从脚本文件里读出来。
   注意问题:前面一个老兄说的没错,表可以放在一起建,存储过程和视图最好一个一个
       的建。
上述方法是通用的,不分连接方式(BDE,ADO),还有多动手去做,其实你做了就并不难。
在有问题给我发信。
-------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------这个问题很简单,
在DELPHI中直接调用ISQL.EXE
建议最好控制在SERVER端运行,否则数据库物理文件的读写权限问题会很麻烦的。
具体如何实现不用我教了,相信你的能力。
快给分吧。
-------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------
我觉得jamlog的方法应该可行,说具体点儿就是在程序里生成这么一句命令:
isqlw -S (local) -d MyServer1 -U sa -P -i d:/program/view1.sql -o d:/program/view1.txt
然后执行它,再利用-o参数后面指定的输出文件里的内容判断是否成功,再做进一步的处理。
------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------
先建一个TSQL脚本文件,头用如下语句

use master
go
if (exists(select name from sysdatabases where upper(name)='DBNAME'))
drop database DBNAME
go
create database DBNAME
go
use DBNAME
go
...

在Delphi程序中,你可以调用ISQL来运行脚本
shellexecute(nil,'open','isql',params,'',sw_hide);
或用winexec吧
具体参数你可以看MS SQL关于ISQL的帮助

Delphi中调用CreateProcess API函数即可(该函数在在Windows.Pas单元中)
------------------------------------------------------------------------------------------

 

方法二:


-------------------------------------读.sql文件--------------------------------------------
我刚刚做了一个新建数据库的向导,这是创建表的函数(读.sql文件):

function TSqlManageFrm.CreateTable:
  Boolean;
var
  I: Integer;
  str: string;

begin
  result := false;
  adoq1.Close;
  try
    adoq1.Close;
    adoq1.sql.Clear;
    adoq1.Sql.LoadFromFile(ExtractFilePath(application.ExeName) +
      'DataBase.sql');
    for I := 0 to adoq1.Sql.Count - 1 do

      if Trim(adoq1.Sql[I]) = 'GO' then
        adoq1.Sql[I] := '';
    //    str := adoq1.Sql.Text;
    //SQL SERVER生成的脚本里都有'GO',但Delphi不认.在生成脚本的时候一定要把表、视图和存储过程分开创建脚本,不然Delphi会报错!
    adoq1.ExecSql;
    result := true;
  except
    MessageBox(GetactiveWindow(), '创建表出错!', '警告', MB_OK +
      mb_iconexclamation);
    exit;
  end;

end; 
-------------------------------------读.sql文件--------------------------------------------

MFC+ADO+ACCESS创建数据库

MFC+ADO+ACCESS创建数据库 发布日期:3/16/2007 2:31:19 PM  BENKONG    最近偶然要做一个小型的数据库管理系统,为了方便用户无需自己用access创建数据库,...
  • Benkong2008
  • Benkong2008
  • 2008年04月21日 20:50
  • 7489

数据结构之图的两种存储方式

第一种:邻接矩阵 邻接矩阵可以表示顶点之间的相邻关系的矩阵,是一个n阶方阵,可以用一个一维数组来表示顶点信息,用一个二维数组来表示顶点之间的边的联系以及权重 具体的代码如下:#in...
  • cupid_qx
  • cupid_qx
  • 2017年03月05日 16:36
  • 1237

数据库的体系结构--三级模式两级映射

大家平时用数据库有sqlserver  mysql  oracle DB2等,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统上,但他们的体系结构是相同的,都是采用的“三级模式和两级...
  • u010108195
  • u010108195
  • 2015年09月25日 15:03
  • 2270

数据结构之自建算法库——图及其存储结构(邻接矩阵、邻接表)

本文是[数据结构基础系列(7):图]中第4课时[图的邻接矩阵存储结构及算法]和第5课时[图的邻接表存储结构及算法],并为后续内容的实践提供支持。  图的存储结构主要包括邻接矩阵和邻接表,本算法库提供存...
  • sxhelijian
  • sxhelijian
  • 2015年11月02日 20:18
  • 5620

c#连接MySql数据库的两种方法

  • 2015年02月03日 23:19
  • 31KB
  • 下载

两种vc数据库连接方法

  • 2012年10月15日 09:30
  • 7KB
  • 下载

jsp中使用动态数据进行mySQL数据库的两种操作方法

  • 2017年11月01日 09:28
  • 9KB
  • 下载

水晶报表下使用PUSH模式调用数据库的两种不同方法

  • 2012年02月13日 15:57
  • 1KB
  • 下载

c#连接MySql数据库的两种方法

  • 2012年09月19日 16:38
  • 1KB
  • 下载

php【递归循环出树形结构】的一个用户下面的所有人信息之【两种方法的对比】

注:这两种方法都是这张图 一:取出这个人下面的所有人,把他们存放在一个一维索引数组里。这个在上一篇博客有仔细说明,这里再说明一下: 代码如下: public function userl...
  • u014796999
  • u014796999
  • 2016年08月01日 17:41
  • 3457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:建立数据库结构的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)