📄 u_dbpublicpack.pas
字号:
If UpperCase(FieldType)='NUMERIC' Then
FieldSql:=FieldSql+FieldName+' '+FieldType+' '+'('+FieldLength+','+FieldPoint+')';
If Count<>RecordCount Then
FieldSql:=FieldSql+','
Else
FieldSql:=FieldSql+')';
Next;
End;
End;
End;
Result:=FieldSql;
Except
On E:EOleException Do
Begin
Result:='';
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
ADOQuery.Free;
End;
//从指定的表取出表结构
Function GetTableStruct(DBConnectionString,ComputeName,DataBaseName,TableName,StructTableName:String):String;
Var
Count:Integer;
ADOQuery:TADOQuery;
FieldType,FieldName,FieldLength,FieldPoint,FieldSql,SqlStr:String;
begin
Try
ADOQuery:=TADOQuery.Create(Nil);
With ADOQuery Do
Begin
SqlStr:='Select FieldType,FieldName,FieldSize,FieldPointCount From '+StructTableName;
SqlStr:=SqlStr+' Where ServerName='+''''+ComputeName+'''';
SqlStr:=SqlStr+' And DataBaseName='+''''+DataBaseName+'''';
SqlStr:=SqlStr+' And TableName='+''''+TableName+'''';
ExecSqlStr(ADOQuery,DBConnectionString,SqlStr,True);
If Not Eof Then
Begin
FieldSql:='(';Count:=0;
While Count<=RecordCount-1 Do
Begin
Inc(Count);
FieldType:=Trim(FieldByName('FieldType').AsString);
FieldName:=Trim(FieldByName('FieldName').AsString);
FieldLength:=Trim(FieldByName('FieldSize').AsString);
FieldPoint:=Trim(FieldByName('FieldPointCount').AsString);
If UpperCase(FieldType)='DATATIME' Then
FieldSql:=FieldSql+FieldName+' '+FieldType;
If UpperCase(FieldType)='VARCHAR' Then
FieldSql:=FieldSql+FieldName+' '+FieldType+' '+'('+FieldLength+')';
If UpperCase(FieldType)='NUMERIC' Then
FieldSql:=FieldSql+FieldName+' '+FieldType+' '+'('+FieldLength+','+FieldPoint+')';
If Count<>RecordCount Then
FieldSql:=FieldSql+','
Else
FieldSql:=FieldSql+')';
Next;
End;
End;
End;
Result:=FieldSql;
Except
On E:EOleException Do
Begin
Result:='';
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
ADOQuery.Free;
End;
//创建一个数据表,表结构从存放数据表结构中取
Function CreateTableName(ADOConnection:TADOConnection;ComputeName,DataBaseName,TableName,StructTableName:String):Boolean;
Var
SqlStr,FieldSqlText:String;
Begin
FieldSqlText:=GetTableStruct(ADOConnection,ComputeName,DataBaseName,TableName,StructTableName);
SqlStr:='Create Table '+TableName+' '+FieldSqlText;
If ExecSqlStr(ADOConnection,SqlStr) Then Result:=True Else Result:=False;
End;
//创建一个数据表,表结构从存放数据表结构中取
Function CreateTableName(DBConnectionString,ComputeName,DataBaseName,TableName,StructTableName:String):Boolean;
Var
SqlStr,FieldSqlText:String;
Begin
FieldSqlText:=GetTableStruct(DBConnectionString,ComputeName,DataBaseName,TableName,StructTableName);
SqlStr:='Create Table '+TableName+' '+FieldSqlText;
If ExecSqlStr(DBConnectionString,SqlStr) Then Result:=True Else Result:=False;
End;
//修改表名
Function UpdateTableName(ADOConnection:TADOConnection;OldTableName:String;NewTableName:String):Boolean;
Var
SqlStr:String;
Begin
SqlStr:='Exec SP_Rename '+OldTableName+','+NewTableName;
If ExecSqlStr(ADOConnection,SqlStr) Then Result:=True Else Result:=False;
End;
//修改表名
Function UpdateTableName(DBConnectionString,OldTableName:String;NewTableName:String):Boolean;
Var
SqlStr:String;
Begin
SqlStr:='Exec SP_Rename '+OldTableName+','+NewTableName;
If ExecSqlStr(DBConnectionString,SqlStr) Then Result:=True Else Result:=False;
End;
//修改数据库名
Function UpdateDataBaseName(ADOConnection:TADOConnection;OldDataBaseName:String;NewDataBaseName:String):Boolean;
Var
SqlStr:String;
Begin
SqlStr:='SP_RenameDB '+OldDataBaseName+','+NewDataBaseName;
If ExecSqlStr(ADOConnection,SqlStr) Then Result:=True Else Result:=False;
End;
//修改数据库名
Function UpdateDataBaseName(DBConnectionString,OldDataBaseName:String;NewDataBaseName:String):Boolean;
Var
SqlStr:String;
Begin
SqlStr:='SP_RenameDB '+OldDataBaseName+','+NewDataBaseName;
If ExecSqlStr(DBConnectionString,SqlStr) Then Result:=True Else Result:=False;
End;
//显性执行Sql语句
Function ExecSqlStr(Var ADOQuery:TADOQuery;DBConnectionString,SqlStr:String;OpenFlag:Boolean):Boolean;
Begin
{
select * from %s where gateid =%d %
ADOQuery.sql.text := Format(SqlStr,['submit', 31]);
}
Try
Result:=True;
With ADOQuery Do
Begin
ConnectionString:=DBConnectionString;
Close;
SQL.Clear;
SQL.Add(SqlStr);
If OpenFlag Then
Open
Else
ExecSQL;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
End;
//显性执行Sql语句
Function ExecSqlStr(Var ADOQuery:TADOQuery;ADOConnection:TADOConnection;SqlStr:String;OpenFlag:Boolean):Boolean;
Begin
Try
Result:=True;
With ADOQuery Do
Begin
ADOQuery.Connection:=ADOConnection;
Close;
SQL.Clear;
SQL.Add(SqlStr);
If OpenFlag Then
Open
Else
ExecSQL;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
End;
//隐性执行Sql语句
Function ExecSqlStr(DBConnectionString,SqlStr:String):Boolean;
Var
ADOQuery:TADOQuery;
Begin
Try
Result:=True;
ADOQuery:=TADOQuery.Create(Nil);
With ADOQuery Do
Begin
ConnectionString:=DBConnectionString;
Close;
SQL.Clear;
SQL.Add(SqlStr);
ExecSQL;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
ADOQuery.Free;
End;
//隐性执行Sql语句
Function ExecSqlStr(ADOConnection:TADOConnection;SqlStr:String):Boolean;
Var
ADOQuery:TADOQuery;
Begin
Try
Result:=True;
ADOQuery:=TADOQuery.Create(Nil);
With ADOQuery Do
Begin
ADOQuery.Connection:=ADOConnection;
Close;
SQL.Clear;
SQL.Add(SqlStr);
ExecSQL;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
ADOQuery.Free;
End;
//调整本机时间与数据库服务器一致
Function AdjustLocalDate(ADOConnection:TADOConnection):Boolean;
Var
ADOQuery:TADOQuery;
SqlStr:String;
GetSystemTime:TSystemTime;
Begin
Try
Result:=True;
ADOQuery:=TADOQuery.Create(nil);
With ADOQuery Do
Begin
SqlStr:='Select GetDate() As CurrDateTime';
If Not ExecSqlStr(ADOQuery,ADOConnection,SqlStr,True) Then
Result:=False;
If Not Eof Then
Begin
DateTimeToSystemTime(FieldByName('CurrDateTime').AsDateTime,GetSystemTime);
SetLocalTime(GetSystemTime);
End;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
End;
//调整本机时间与数据库服务器一致
Function AdjustLocalDate(DBConnectionString:String):Boolean;
Var
ADOQuery:TADOQuery;
SqlStr:String;
GetSystemTime:TSystemTime;
Begin
Try
Result:=True;
ADOQuery:=TADOQuery.Create(nil);
With ADOQuery Do
Begin
SqlStr:='Select GetDate() As CurrDateTime';
If Not ExecSqlStr(ADOQuery,DBConnectionString,SqlStr,True) Then
Result:=False;
If Not Eof Then
Begin
DateTimeToSystemTime(FieldByName('CurrDateTime').AsDateTime,GetSystemTime);
SetLocalTime(GetSystemTime);
End;
End;
Except
On E:EOleException Do
Begin
Result:=False;
MessageDLG('Error:'+E.Message,MtWarning,[MBOK],0);
End;
End;
End;
Procedure GetAllDateBaseName(aList:TStrings;aServerName:String);
var
i:Integer;
ads:TADODataSet;
AdoCnt:TADOConnection;
DataBaseName,UserName,Password,DBCntStr:String;
begin
if aList=nil then Exit;
aList.Clear;
AdoCnt:=TADOConnection.Create(nil);
AdoCnt.LoginPrompt:=False;
//读取数据库连接配置数据
aServerName := Trim(aServerName);
DataBaseName:='master';
UserName:=ServerLoginUserName;
Password:=ServerLoginUserPwd;
DBCntStr:=GetDBConnectionString(aServerName,DataBaseName,UserName,Password);
ConnectDataBase(AdoCnt,DBCntStr);
ads:=TADODataSet.Create(nil);
ads.Connection:=AdoCnt;
with Ads do
begin
CommandText:='Select name From sysdatabases';
Open;
for i:=0 to RecordCount - 1 do
begin
aList.Add(FieldByName('Name').AsString);
Next;
end;
end;
FreeAndNil(ads);
FreeAndNil(AdoCnt);
end;
Procedure GetAllTableName(aServerName,aDataBaseName:String;aList:TStrings);
var
AdoCnt:TADOConnection;
UserName,Password,DBCntStr:String;
begin
if aList=nil then Exit;
aList.Clear;
AdoCnt:=TADOConnection.Create(nil);
AdoCnt.LoginPrompt:=False;
//读取数据库连接配置数据
Trim(aServerName);
aDataBaseName := Trim(aDataBaseName);
UserName:=ServerLoginUserName;
Password:=ServerLoginUserPwd;
DBCntStr:=GetDBConnectionString(aServerName,aDataBaseName,UserName,Password);
ConnectDataBase(AdoCnt,DBCntStr);
AdoCnt.GetTableNames(aList,False);
FreeAndNil(AdoCnt);
end;
End.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -