sql server版本的进销存软件是如何用程序初始化数据库和创建账套的?我发现一般的进销存软件的创建步骤是这样的:
1、建一个总数据库:提示用户输入数据库服务器名、数据库登陆用户名、登陆密码,先创建一个总数据库,用来存放将来要存放的账套数据库的数据库名称和路径。
2、建账套:客户端输入要创建的账套的名称,创建账套数据库。我虽然知道创建的过程,但我不知道它具体是如何创建的,使用脚本创建的?还是用还原数据库的方式?还是用附加数据库的方式?它是如何做到既安全又高效的?

解决方案 »

  1.   

    创建数据库应该是用sql语句来创建的。create database........之类的,你去查查详细的语句
      

  2.   

    procedure ExecuteScript(ScriptFile : string);
      var
        i : integer;
        strCmdText,strSQL : string;
        lstSQL : Tstringlist;
      begin
        lstSQL := TStringList.Create;
        try
          lstSQL.LoadFromFile(ScriptFile);
          pb.MaxValue := lstSQL.Count;
          pb.MinValue := 0;
          pb.Progress := 0;
          strCmdText := '';
          strSql := '';
          for i:=0 to lstSQL.Count-1 do
          begin
            strCmdText:=lstSQL[i];//读取一行
            strCmdText := Trim(strCmdText);
            if (Length(strCmdText)>0) and//屏蔽空行
             (copy(strCmdText,1,2) <> '/*') and (copy(strCmdText,1,2) <> '--') then//屏蔽注释行
            begin
              if UpperCase(copy(strCmdText,1,2)) <> 'GO' then
              begin
                strSQL:=strSQL+#13#10+strCmdText;
              end
              else
              begin
                conn.Execute(strSQL);
                strSQL:='';
              end;
            end;
            pb.Progress := pb.Progress + 1;
            Application.ProcessMessages;
          end; 
        finally
          lstSQL.Free;
        end;
      end;上边是执行指定文件脚本的例子。其中conn是个数据库连接。
    给你个脚本例子:CREATE DATABASE Branch_mis
    GO
    USE Branch_mis
    GO----********权限管理部分的建表******************CREATE TABLE [tchtc].[t_subsys] (
    [f_subsys_name] [varchar] (20) NULL ,
    [f_subsys_id] [int] NOT NULL ,
    [f_qxbz] [varchar] (20) NULL 
    ) ON [PRIMARY]
    GOCREATE TABLE [tchtc].[t_module] (
    [f_module_id] [int] NOT NULL ,
    [f_subsys_id] [int] NOT NULL ,
    [f_module_name] [varchar] (20) NULL,
    [f_module_entry] [varchar] (20) NULL 
    ) ON [PRIMARY]
    GO
      

  3.   

    楼上的看来是个老油条了,楼主试一试他的方法。
    基本的思路就是通过
    create database 建立数据库
    create table    建立表
    剩下的就是T-sQl的事情了
    .....
      

  4.   

    生成sql 脚本
    filestream 读取脚本文件
    使用adocommand执行
      

  5.   

    to: 回复人: cuilj(一云忆水) ( ) 信誉:100 脚本文件创建的数据库的名称和路径是固定的,每次创建帐套的时候,数据库名称和路径不可能一样,那每次都要修改脚本,你是怎么处理的呢?是否用以上的程序边读取边处理呢?
      

  6.   

    CREATE DATABASE %s --注意这里
    GO
    USE Branch_mis
    GO
    if pos('%s',一行脚本) > 0 then
                begin
                  if Length(strSQL) = 0 then
                    strSQL:=Format(一行脚本,[BandDBName])
                  else
                    strSQL:=strSQL+#13#10+Format(strCmdText,[BandDBName]);
                end;
    执行strSQL
      

  7.   

    CREATE DATABASE %s --注意这里
    GO
    USE Branch_mis
    GO
    if pos('%s',一行脚本) > 0 then
                begin
                  if Length(strSQL) = 0 then
                    strSQL:=Format(一行脚本,[BandDBName])
                  else
                    strSQL:=strSQL+#13#10+Format(strCmdText,[BandDBName]);
                end;
    执行strSQL
    ========================================
    不好意思,你上面的程序我不太看得懂,能否详细解释一下
      

  8.   

    to 回复人: cuilj(一云忆水) ( ) 信誉:100 
    我看懂了,不必解释了