软件开发完成,做安装打包程序的时候,怎么在安装打包的时候创建数据库,也就是说怎么才能在软件里创建数据库(数据库里有部分初始括数据的!)弟兄们帮忙啊!!!
解决方案 »
- delphi7 中添加第3方控件的问题?
- 这个问题有点怪
- sql经典~如何快速查找考试前三名人员的姓名
- 求助:关于DELPHI分布式开发的方案介绍
- 忍不住,要强烈谴责西安的这一家公司。。。。。。
- 哪位高手帮帮忙?怎么复制DBGRID中的一条记录?
- VC++Dll中调用CDaoDatabase,该DLL在delphi中被调用的时候退出死机的解决方法
- 如何手动修改dbgrid中某一项内容的值???高分,紧急,100!
- 简单的问题:如何在dbgrid上填充内容
- 如何在TXT文本中的某一行追加数据,请详解
- 请问OCX被下载时会有安全提示,通过注册表哪个键可以改????
- 各住大哥,我有个简单的数据庫问题要请教?
2拷贝mdb文件sp_attach_single_file_db
3。create database...
ON
( NAME = bbb_dat,
FILENAME = 'c:\temp\bbb.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'bbb_log',
FILENAME = 'c:\temp\bbblog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )再执行ADOQUERY.EXECSQL,就生成BBB数据库
对你可能有点用。
unit InitDbDM;interfaceuses
SysUtils, Classes, DB, DBTables, Registry, Windows, TlHelp32;type
TInitDbDataMoudule = class(TDataModule)
dbInitDb: TDatabase;
private
{ Private declarations }
function GetSQLServerPath:String;
public
{ Public declarations }
function IsSQLServerRunning:Boolean;
procedure CreateDb(dbName : String;
dbSize : String);
end;var
InitDbDataMoudule: TInitDbDataMoudule;implementation
{$R *.dfm}
//**************************************************
// 功能:取得SQLServer的安装路径
//
// 返回:SQLServer的安装路径
//**************************************************
function TInitDbDataMoudule.GetSQLServerPath:String;
var
reg : TRegistry;
path : String;
begin
path := '';
reg :=TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('Software\Microsoft\MSSQLServer\Setup', False);
path := reg.ReadString('SqlPath');
reg.CloseKey;
reg.free;
Result := path;
end; //**************************************************
// 功能:检测SQLServer是否正在运行
//
// 返回:true 正在运行
// false 不在运行
//**************************************************
function TInitDbDataMoudule.IsSQLServerRunning: Boolean;
var
finded : bool;
proListHandle : THandle;
proStruct : TProcessentry32; //记录进程的数据结构;
begin
Result := False;
proListHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
proStruct.dwSize := SizeOf(proStruct);
finded := Process32First(proListHandle, proStruct);//发现第一个进程;
while integer(finded) <> 0 do
begin
if Pos('SQLSERVR.EXE', Uppercase(proStruct.szExeFile)) <> 0 then
begin
Result:=True;
Break;
end;
finded := Process32Next(proListHandle, proStruct);//发现下一个进程;
end;
end; //**************************************************
// 功能:创建SQLServer数据库
//
// 参数:dbName 数据库名
// dbSize 数据库大小
//**************************************************
procedure TInitDbDataMoudule.CreateDb(dbName : String;
dbSize : String);
var
sqlPath : String;
dataFile : String;
logFile : String;
createDbSql : String;
begin
sqlPath := GetSQLServerPath; dataFile := sqlPath + '\data\' + dbName + '_data.mdf';
logFile := sqlPath + '\data\' + dbName + '_log.ldf'; createDbSql := 'Create Database ' + dbName +
' on primary(Name = ' + dbName + '_dat' +
', FileName = "' + dataFile +
'" , Size = ' + dbSize +
', FileGrowth = 1) ' +
'log on (Name = ' + dbName + '_log' +
', FileName = "' + logFile +
'", Size = ' + dbSize +
', FileGrowth = 1)'; if Not (FileExists(dataFile) or FileExists(logFile)) then
dbInitDb.Execute(createDbSql);
end;end.
然后在installshield中调用(LaunchApp)这个exe,你就不必修改你的程序了!