在线等
解决方案 »
- 出错了!!帮我看看!
- 小弟用delphi只有一个心愿,大家满足我一下吧
- 关于查询结果的问题
- !!!求PASCAL的编译器源代码(实现PASCAL的 部分语法分析也可以)!!!
- Delphi & Corba
- 使用ado连接sql server 2k ,具体该怎么操作?还请高手指点?
- 英语单词音标的问题
- 如果在软件是使用flash,那么要在其它的机子上运行必须安装什么?
- 为什么报表预览不同的机子有不同的结果?
- 如何在程序中打开一个readme.txt(记事本文件)?
- 如何在INTRAWEB程序中执行JAVA SCRIPT代码?
- up有分!解决高分:在线等:怎么使用程序创建数据库?如创建Access
adocommand1.CommandText := commandstr;
adocommand1.Execute;
ServerHost,DataBaseDesc,UserID,Pass:String);
begin
try //Initial Catalog=UFSystem;Data Source=JIANGWEI
AccConn.Connected:=False;
AccConn.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;'+
'User ID=' +UserID+ ';Data Source='+ServerHost;
//-------密码一定不能为空!----------------------
// if Trim(Pass) <> '' then
// AccConn.ConnectionString := AccConn.ConnectionString +';Password='+Pass;
AccConn.Connected := True;
except
MessageDlg('连接数据库错误,请检查连接字符串是否有误!', mtError,[mbOk],0);
Exit;
end;
//-----------------------------------------
try
AccConn.Execute('Create Database ' + Trim(DatabaseDesc)); // Add Some Param
MessageDlg('成功创建数据库!',mtConfirmation,[mbOk],0);
except
MessageDlg('创建数据库时出错!',mtError,[mbOK],0);
end;
AccConn.Connected := False;
end;procedure TForm1.ExecSqlScript(Var ServerHost,DataBaseDesc,UserID,Pass:String);
var
TempString,SQLFileName:String;
SqlString:AnsiString;
SqlFile : TextFile;
CreateCount,i,j : Integer;
TblStr,FldStr:TStringList;
TmpStream : TMemoryStream;
begin
SQLFileName := ExtractFilePath(ParamStr(0))+ 'Init.Sql';
if not FileExists(SQLFileName) then begin
MessageDlg('SQL执行脚本文件不存在!',mtError,[mbOk],0);
Exit;
end;
FrmProcess:=TFrmprocess.Create(Self);
FrmProcess.TransCount.MinValue:=0;
FrmProcess.TransCount.MaxValue:=100;
FrmProcess.Show;
//打开SQL执行脚本文件
try
AssignFile(SqlFile,SQLFileName);
Reset(SqlFile);
except
MessageDlg('打开SQL执行脚本文件时出错!',mtWarning ,[mbOk],0);
FrmProcess.Close;
Exit;
end;
FrmProcess.TransCount.Progress:=2;
//连接数据库
try
AccConn.Connected := False;
AccConn.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security
Info=False;'+
'User ID='+UserID+';Data Source='+ServerHost+';Initial
Catalog='+DatabaseDesc;
if Trim(Pass) <> '' then
AccConn.ConnectionString := AccConn.ConnectionString +
';password=' +Pass;
//连接数据库
AccConn.Connected := True;
if Uppercase(Trim(AccConn.DefaultDatabase)) = 'MASTER' then
if Application.Messagebox('真要在Master数据库上执行此操作吗?','警告
',mb_yesno+mb_iconInformation)=idno then begin
CloseFile(SqlFile);
AccConn.Connected := False;
Exit;
End;
except
MessageDlg('连接数据库错误,请检查数据库连接信息是否有误!
',mtError,[mbOk],0);
CloseFile(SqlFile);
Exit;
end;
FrmProcess.TransCount.Progress:=4;
//读SQL执行脚本文件以确定有多少句Go语句 -->Step
CreateCount := 0 ;
try
while not Eof(SqlFile) do begin
ReadLn(SqlFile,TempString);
if Uppercase(copy(TempString,1,2)) = 'GO' then
Inc(CreateCount);
end;
Reset(SqlFile);
except
MessageDlg('读SQL执行脚本文件时出错!' ,mtError,[mbOK],0);
CloseFile(SqlFile);
AccConn.Connected := False;
Exit;
end;
FrmProcess.TransCount.MaxValue:=Round(CreateCount*1.25);
FrmProcess.TransCount.Progress:=Round(FrmProcess.TransCount.MaxV
alue*0.9)-CreateCount;
//执行SQL语句
AccConn.BeginTrans;
try
while not Eof(SqlFile) do begin
SqlString :='';
while not Eof(SqlFile) do begin
ReadLn(SqlFile,TempString);
if Copy(TempString,1,2) = 'GO' then Break;
SqlString := SqlString + #13#10 + TempString;
end;
try
//-----------------------------
AccConn.Execute(SqlString);
//----------------------------
except
if Application.MessageBox('初始化数据库出现错误,'+#13#10+'如果继续
执行可能导致以后使用有问题,继续执行吗?','提示
',mb_YesNo+MB_ICONINFORMATION)=IDNO then
raise Exception.Create('事务执行错误!');
end;
if
FrmProcess.TransCount.Progress<FrmProcess.TransCount.MaxValue
then
FrmProcess.TransCount.Progress:=FrmProcess.TransCount.Progres
s+1;
end;
AccConn.CommitTrans ;
except
AccConn.RollbackTrans ;
FrmProcess.Close;
MessageDlg('事务执行过程出现错误!',mtError,[mbOK],0);
CloseFile(SqlFile);
AccConn.Connected := False;
Exit;
end;
//追加基本数据表数据----Adapt In
2002-06-10---------vinson------------------
Accconn.Connected:=False;
Sleep(10);
Accconn.Connected:=True;
Accconn.BeginTrans;
try
// Dict-File
SourceConn.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security
Info=False;Data Source=' +
GetCurrentDir +'\DbDict.IND';
SourceConn.Connected:=True;
TblStr:=TStringList.Create;
FldStr:=TStringList.Create;
SourceConn.GetTableNames(TblStr);
FrmProcess.TransCount.Maxvalue:=Round(TblStr.Count * 12.5);
FrmProcess.TransCount.Progress:=FrmProcess.TransCount.MaxValue-T
blStr.Count;
TmpStream:=TMemoryStream.Create;
for i := 0 to TblStr.Count - 1 do
try
FldStr.Clear;
Accconn.GetFieldNames(TblStr[i],FldStr);
tblsource.Active := False;
tblsource.TableName := TblStr[i];
tblsource.Active := True;
tblDesc.Active := False;
tblDesc.TableName:=TblStr[i];
tblDesc.Active := True;
tblsource.First;
while not tblsource.Eof do begin
tblDesc.Insert;
for j := 0 to FldStr.Count -1 do
if tblDesc.FieldByName(FldStr[j]).AutoGenerateValue = arNone
then
case tblDesc.FieldByName(FldStr[j]).DataType of
ftBlob :
tblDesc.FieldByName(FldStr[j]).Assign( tblsource.FieldByName
(FldStr[j]));
ftString,ftWideString,ftMemo:
tblDesc.FieldByName(FldStr[j]).AsString :=
Trim(tblsource.FieldByName(FldStr[j]).Asstring) ;
ftBoolean:
tblDesc.FieldByName(FldStr[j]).AsBoolean :=
tblsource.FieldByName(FldStr[j]).AsBoolean ;
else
tblDesc.FieldByName(FldStr[j]).Value :=
tblsource.FieldByName(FldStr[j]).Value ;
end;
tbldesc.Post;
tblsource.Next;
end;
if
FrmProcess.TransCount.Progress<FrmProcess.TransCount.MaxValue
then
FrmProcess.TransCount.Progress:=FrmProcess.TransCount.Progress
+1;
except
end;
Accconn.CommitTrans;
FrmProcess.TransCount.Progress:=FrmProcess.TransCount.MaxValue;
FrmProcess.Close;
Messagedlg('事务执行完毕,请设置帐套参数。',mtinformation,[mbOk],0);
except
Accconn.RollbackTrans;
Messagedlg('事务执行过程当中出现错误!'+#13#10+'请与软件提供商联系。
',mtinformation,[mbOk],0);
end;
//===========================================================
CloseFile(SqlFile);
FrmProcess.Close;
Accconn.Connected:=False;
TblStr.Free;
FldStr.Free;
SourceConn.Connected:=False;
end;
adoquery1.sql.add('create table text (id int(2),userid varchar(20))');
adoquery1.execsql;