全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1201
推到 Plurk!
推到 Facebook!

如何在应用程序中创建SQL数据库

答題得分者是:malanlk
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-28 11:56:59 IP:222.184.xxx.xxx 未訂閱
目前我已学会通过SQL数据库操作,将数据库拷贝到客户电脑上,现在我所要问的是:客户无需直接使用SQL数据库操作,在我的应用程序上就能够完成数据库的创建任务。我所想开发的软件界面如图:(不一定完全模仿,只是表达一下我的意思的) 所要实现的功能:用户双击运行我的软件,就出现如图界面,软件能自动查询到可用的SQL服务器(当然也可以手工填写名称)用户可设置连接用户名和密码,然后测试连接,成功后可以点下一步,将我软件目录下的数据库附加到当前的SQL数据库中。至此,我软件运行所要的数据库就成功的安装到了客户的电脑中了。
------
我的编程起步于ktop,我将永远支持ktop
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-28 15:15:02 IP:218.94.xxx.xxx 未訂閱
这个是我以前写的可以实现数据库附加功能! 你可以参考一下!    
function TDBRestoreFrm.RestoreDB(strDBName, strFileName: string): boolean;
var
  strSQL: string;
begin
  Result := false;
  strSQL := 'EXEC sp_attach_db '''   strDBName   ''','''   strFileName   '''';
  try
    ADOConnectionSQL.DefaultDatabase := 'master';
    ADODataSetWho.Recordset := ADOConnectionSQL.Execute('sp_who');
    ADODataSetWho.First;
    while not ADODataSetWho.Eof do
    begin
      if ADODataSetWho.FieldByName('dbname').AsString = strDBName then
      begin
        ADOConnectionSQL.DefaultDatabase := strDBName;
        MessageBox(Application.Handle, pchar('用户'   ADODataSetWho.FieldByName('loginame').AsString   '正在使用数据库'   strDBName   '!'), '恢复错误', MB_OK   MB_ICONERROR);
        Exit;
      end;
      ADODataSetWho.Next;
    end;        ADOConnectionSQL.Execute(strSQL);
  except
    MessageBox(Application.Handle, '无法附加数据库文件!', '恢复错误', MB_OK   MB_ICONERROR);
    Exit;
  end;
  Result := true;
end;    procedure TDBRestoreFrm.Button1Click(Sender: TObject);
begin
  if (Trim(DBBackup.Text) = '') or (Trim(DataBaseName.Text) = '') or (Trim(DBRestoreFile.Text) = '') then
  begin
    MessageBox(Handle, '数据库、附加文件、库备份路径信息必须填写!', '系统提示', MB_OK);
    Exit;
  end;
  ADOConnectionSQL.Close;
  ADOConnectionSQL.ConnectionString := 'Provider=SQLOLEDB.1;Password='''   Trim(Password.Text)  
    ''';Persist Security Info=True;User ID='''   Trim(UserName.Text)   ''';Initial Catalog=master;Data Source='''   Trim(ServerName.Text)   '''';
  try
    ADOConnectionSQL.Open;
    if ADOConnectionSQL.Connected then
      if RestoreDB(Trim(DataBaseName.Text), Trim(DBRestoreFile.Text)) then
      begin
       //保存连接配置
        SaveConnstr(DBBackup.Text, 'Provider=SQLOLEDB.1;Password='''   Trim(Password.Text)  
          ''';Persist Security Info=True;User ID='''   Trim(UserName.Text)  
          ''';Initial Catalog='''   Trim(DataBaseName.Text)   ''';Data Source='''   Trim(ServerName.Text)   '''');
        MessageBox(Handle, '数据库成功附加!', '系统提示', MB_OK);
      end;
  except
    on ex: Exception do
      raise Exception.Create('出错提示:'   #13#10   ex.Message);
  end;
end;    
风花雪月 e梦情缘 网络代号:wnhoo or sos_admin 网名:e梦缘 Mail:wnhoo@163.com
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-28 17:42:38 IP:222.184.xxx.xxx 未訂閱
因小弟功底较差,前辈的代码看了个半懂,这上面好象不包括检测现有的SQL服务器?还有 ADOConnectionSQL ADODataSetWho 我也不懂是什么,是不是自己命名的控件?不知道哪位有这么一个能成功运行的实例源码?谢谢
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-28 21:39:44 IP:222.184.xxx.xxx 未訂閱
各位前辈,小弟找到了一个实例源码,所以暂不麻烦各位上传了,我先自己做了试,有不懂的我再来提问,谢谢!
------
我的编程起步于ktop,我将永远支持ktop
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-29 01:40:11 IP:61.219.xxx.xxx 未訂閱
記得結案哦
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-29 09:18:49 IP:218.94.xxx.xxx 未訂閱
ADODataSetWho   就是 TADODataSet    ADOConnectionSQL  就是 TADOConnection    至于列出Lan中SQL主机名称,网上有现成的函数,你可以Sreach! 风花雪月
系統時間:2024-06-16 1:02:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!