我用的是Sql server 7.0+delphi 开发了一个程序,现在想打包,希望能把数据库结构,初始数据一次性在安装程序的时候给客户装好,客户上的Sql server 已经装好了。请问哪位有高见,请指教!
解决方案 »
- fastreport中如何将明细放在主数据栏中一个格子里呢?
- 循环与多线程
- 一条sql语句如何分行来写
- 带cst一类的控件是哪个包里面的?
- 做好地软件在别人机器上运行出错:unknown sofrware exception w为何呀???
- 急!!!!!!(高分酬谢!!!!)请问怎么实现调用win2000自带的自动更新
- 请问:如何将DBGRID查询的结果中值小于0的数显示为红色,其他为黑色
- 一个日渐困惑的问题!
- 新手碰到的问题
- 征集代码
- 关于设置DrawGrid控件的问题,我分别设置它为Fixedcols,FixedRows,Gridlinewidth的值为 0 ,我点击其中一项,选择项四周怎么会出现线框呢.如
- 关于DateTimePicker!
这就必须自己编写安装程序了,用 query来运行 sql语句
我们发布一般都是把Sql Server 中的库备份文件或用.LDF和.MDF文件,但是怎么把他们回导到库里去?
听说可以用sql的工具osql执行一段sql就可以。我去试一下,这个问题我都忘了来看了。
这个问题已经不急,来跟大家讨论讨论。
另外,我在cmd下执行osql老是不成功,不知道怎么回事,
打包工具,最好只完成文件拷贝等常规工作。这样应该比较好·
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,ADODB, DB, DBTables, ExtCtrls;type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
Label1: TLabel;
SpeedButton2: TSpeedButton;
Edit2: TEdit;
Label2: TLabel;
OpenDialog2: TOpenDialog;
BitBtn2: TBitBtn;
DB: TDatabase;
Bevel1: TBevel;
Label3: TLabel;
Edit3: TEdit;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure FJdatabase(Databasename,MDF,LDF:string;var fjmessage:integer);//附加数据库
var ADOCommand:TADOCommand;
sqltxt,cstr:string;
begin
ADOCommand:=TADOCommand.create(application.owner);
try
cstr:='Provider=SQLOLEDB.1;';
cstr:=cstr+'Persist Security Info=False;';
cstr:=cstr+'User ID=sa;';
cstr:=cstr+'Initial Catalog=master;';
cstr:=cstr+'Data Source=(local)';
try
ADOCommand.ConnectionString:=cstr;
except
fjmessage:=0;
exit;
end;
sqltxt:='IF EXISTS (SELECT * FROM sysdatabases WHERE name = '''+Databasename+''')'+chr(10);
sqltxt:=sqltxt+'BEGIN'+chr(10);
sqltxt:=sqltxt+'DROP database '+Databasename+chr(10);
sqltxt:=sqltxt+'END;'+chr(10);
ADOCommand.CommandText:=sqltxt;
ADOCommand.Execute;
sqltxt:='EXEC sp_attach_db @dbname = N'''+Databasename+''','+chr(10);
sqltxt:=sqltxt+' @filename1 = N'''+MDF+''','+chr(10);
sqltxt:=sqltxt+' @filename2 = N'''+LDF+''''+chr(10);
ADOCommand.CommandText:=sqltxt;
ADOCommand.Execute;
fjmessage:=1;
finally
ADOCommand.free;
end;
end;procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
OpenDialog1.InitialDir:=extractfilepath(Application.exename)+'data\';
if OpenDialog1.Execute then
edit1.Text:= OpenDialog1.FileName;
end;procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
OpenDialog2.InitialDir:=extractfilepath(Application.exename)+'data\';
if OpenDialog2.Execute then
edit2.Text:= OpenDialog2.FileName;
end;procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var ADOQuery:TADOQuery;
cstr,sqltxt:string;
fjmessage:integer;
begin
cstr:='Provider=SQLOLEDB.1;';
cstr:=cstr+'Persist Security Info=False;';
cstr:=cstr+'User ID=sa;';
cstr:=cstr+'Initial Catalog=master;';
cstr:=cstr+'Data Source=(local)';
ADOQuery:=TADOQuery.create(application.owner);
ADOQuery.ConnectionString:=cstr;
try
sqltxt:='SELECT * FROM sysdatabases WHERE name ='''+edit3.Text+'''';
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(sqltxt);
ADOQuery.open;
if ADOQuery.RecordCount=0 then
begin
fjdatabase(edit3.Text,edit1.Text,edit2.Text,fjmessage);
if fjmessage=1 then
Application.MessageBox('数据库添加成功!','成功',MB_OK)
else
Application.MessageBox('数据库添加失败!','错误',MB_OK);
end else Application.MessageBox('该数据库已经存在,不能创建!','错误',MB_OK);finally
ADOQuery.free;
end;
end;procedure TForm1.Edit1Change(Sender: TObject);
begin
edit1.Hint:=edit1.Text;
edit1.ShowHint:=true;
end;procedure TForm1.Edit2Change(Sender: TObject);
begin
edit2.Hint:=edit2.Text;
edit2.ShowHint:=true;
end;end.
inst_uidb70.bat
echo installing UIDB, please wait...isql -Usa -P -i"2.´´½¨ÀúÊ·»°µ¥µÄÊý¾Ý¿â±í70.SQL"
isql -Usa -P -i"3.´´½¨ICDƽ̨Êý¾Ý¿â±íProxyµ÷Óò¿·Ö70.SQL"
isql -Usa -P -i"4.´´½¨ICDƽ̨Êý¾Ý¿â±í¹ÜÀį́²¿·Ö70.SQL"
isql -Usa -P -i"5.´´½¨Êý¾Ý¿âË÷Òý70.SQL"
isql -Usa -P -i"6.´´½¨ICDƽ̨Êý¾Ý¿â´æ´¢¹ý³ÌProxyµ÷Óò¿·Ö70.SQL"
isql -Usa -P -i"7.´´½¨ICDƽ̨Êý¾Ý¿â´æ´¢¹ý³Ì¹ÜÀį́²¿·Ö70.SQL"
isql -Usa -P -i"8.´´½¨Öʼį̀Óô洢¹ý³Ì70.sql"
isql -Usa -P -i"9.´´½¨Óû§¼°ÊÚȨ70.sql"
isql -Usa -P -i"11.ͨÓñ¨±í½Ó¿Ú´æ´¢¹ý³Ì70.sql"
cmd.exe /C "del c:\uidb_temp\INST_UIDB70.bat"
echo the installation end.