📄 uu1.pas.~2~
字号:
unit uU1;
interface
uses
ADODB, SysUtils, Classes, WideStrings, Grids, Forms;
//声明全局函数
function autoBackSQL(const sNameSQL,sNameBCK:string):boolean;//备份数据库
function autoRestSQL(const sNameSQL,sNameBCK:string):boolean;//还原数据库
procedure oleAdoQurySub(dbPathName, oldPsd:string; Var adoQury: TADOQuery);
function oleQuryExecS(dbPathName, oldPsd:string; sqls:TWideStrings):boolean;
function sqlSevr(sBase:string):boolean; //判断sql服务器是否开启
function sqlSevr_2(sBase:string):boolean; //2秒超时
function sqlSevr_15(sBase:string):boolean; //15秒超时
procedure sqlConnSub(sBase:string; Var adoConn: TADOConnection); //仅设定TADOConnection连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
procedure sqlQurySub(sBase:string; Var adoQury: TADOQuery); //仅设定连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
procedure sqlComdSub(sBase:string; Var adoComd: TADOCommand); //仅设定TADOCommand连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
function sqlCrtDB(name,path :string; Var adoQury: TADOQuery):boolean;
function existDB(name :string; Var adoQury: TADOQuery):boolean; //是否存在此数据库, Qury是正确连接到master库
function sqlCrtTable(flag:boolean; Var adoQury: TADOQuery):boolean; //创建数据库中的表(没有数据)
function wrtDataToSeei(Var Qury: TADOQuery):boolean; //在kj78_seei中写入默认数据(仅在刚创建时)
procedure funCpyTable(flag:boolean; Var Qury: TADOQuery); //从seei中自制表数据到当前库中
function sqlQuryExecS(name :string; var sqls :TWideStrings):boolean; //执行sql语句, name为库名
function sqlQuryExecS_2(var Qury :TADOQuery):boolean; //执行sql语句
function sqlQuryExec(name, sql:string):boolean; //执行sql语句, name为库名
function sqlComdExec(name :string; sql :string):boolean; //执行sql语句, name为库名
function existRecord(name,table,field,value :string):boolean; //是否存在记录, name为库名, table为表名, field为字段名, value为值
function existRecordSql(name,sql :string):boolean; //是否存在记录, 用sql语句判断
function sRecordSql(name,sql :string):string;//用sql语句返回第一条记录的第一字段数据
procedure sqlStrGrd3(name, sql:string; var sg:TStringGrid; s1:string='-'; s2:string='-');
procedure sqlLst(name,sql,c :string; var lst :TStrings); //执行sql语句, name为库名
function tabToRow(tmpStr:string; col:SmallInt; var sg:TStringGrid):LongInt;
function tabToRow2(Str1,Str2:string; col1,col2:SmallInt; var sg:TStringGrid):LongInt;
function tabToRow3(Str1,Str2,Str3:string; col1,col2,col3:SmallInt; var sg:TStringGrid):LongInt;
function tabToRow_s(tmpStr:string; col,colRtn:SmallInt; var sg:TStringGrid):string;
procedure sqlTJVal(name,sql :string; var sg:TStringGrid);//统计最小值,平均值,最大值
function idxTJVal(sCD,sCGQ:string; var sg:TStringGrid):integer;//序号 统计最小值,平均值,最大值
procedure sqlKGState(name,sql,sTim1 :string; var iK,iG,tK,tG,tD:integer; var lst:TStrings);//统计开关量状态变动(过滤)
implementation
//uses
// uPU,uU3;
function autoBackSQL(const sNameSQL,sNameBCK:string):boolean;//自动备份数据库
Var
adoConn :TADOConnection;
rtn :boolean;
begin
try
rtn :=false;
adoConn :=TADOConnection.Create(nil);
sqlConnSub('master',adoConn);
adoConn.Execute('Backup database '+sNameSQL+' to Disk='''+ bckPath+sNameBCK+''' with init');
rtn :=true;
finally
FreeAndNil(adoConn);
end;
Result :=rtn;
end;
function autoRestSQL(const sNameSQL,sNameBCK:string):boolean;//还原数据库
Var
adoConn :TADOConnection;
rtn :boolean;
begin
try
rtn :=false;
adoConn :=TADOConnection.Create(nil);
sqlConnSub('master',adoConn);
adoConn.Execute('Restore database '+sNameSQL+' From Disk='''+bckPath+sNameBCK+'''');
rtn :=true;
finally
FreeAndNil(adoConn);
end;
Result :=rtn;
end;
procedure oleAdoQurySub(dbPathName, oldPsd:string; Var adoQury: TADOQuery);
{ 返回 TADOQuery 对象 (引用ADODB)
dbPathName为带路径的数据库名 (D:\Delphi\数据库\kj78.mdb)
}
begin
adoQury.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0'
+';User ID=Admin;Data Source=' + dbPathName
+';Jet OLEDB:Database Password=' + oldPsd ;
end;
function oleQuryExecS(dbPathName, oldPsd:string; sqls:TWideStrings):boolean;
{ 执行sql语句
dbPathName为带路径的数据库名 (D:\Delphi\数据库\kj78.mdb)
sql := 'insert into 传感器(传感器号,传感器名)values(245,''iu'') ';
当插入重复时不报错, 滤掉此条
}
var
adoQury: TADOQuery;
rtn:boolean;
i : integer;
begin
//coInitialize(nil);
adoQury := TADOQuery.Create(nil);
adoQury.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0'
+';User ID=Admin;Data Source=' + dbPathName
+';Jet OLEDB:Database Password=' + oldPsd ;
if sqls.Count>0 then begin
for i:=0 to sqls.Count-1 do begin
try try
adoQury.SQL.Text := sqls[i];
adoQury.ExecSQL;
Application.ProcessMessages;
except
end finally
end;
end;
end;
adoQury.Close;
FreeAndNil( adoQury );
//coUninitialize;
rtn := true;
Result := rtn;
end;
function sqlSevr(sBase:string):boolean;
//判断sql服务器是否开启 master
var
rtn:boolean;
adoConn: TADOConnection;
begin
rtn :=false;
adoConn :=TADOConnection.Create(nil);
adoConn.ConnectionTimeout :=10;
adoConn.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
try try
adoConn.Open;
rtn :=true;
except end finally
adoConn.Close;
FreeAndNil( adoConn ); //SysUtils单元
end;
Result :=rtn;
end;
function sqlSevr_2(sBase:string):boolean; //2秒超时
//判断sql服务器是否开启 master
var
rtn:boolean;
adoConn: TADOConnection;
begin
rtn :=false;
adoConn :=TADOConnection.Create(nil);
adoConn.ConnectionTimeout :=2;
adoConn.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
try try
adoConn.Open;
rtn :=true;
except end finally
adoConn.Close;
FreeAndNil( adoConn ); //SysUtils单元
end;
Result :=rtn;
end;
function sqlSevr_15(sBase:string):boolean; //12秒超时
//判断sql服务器是否开启 master
var
rtn:boolean;
adoConn: TADOConnection;
begin
rtn :=false;
adoConn :=TADOConnection.Create(nil);
adoConn.ConnectionTimeout :=15;
adoConn.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
try try
adoConn.Open;
rtn :=true;
except end finally
adoConn.Close;
FreeAndNil( adoConn ); //SysUtils单元
end;
Result :=rtn;
end;
procedure sqlConnSub(sBase:string; Var adoConn: TADOConnection); //仅设定TADOConnection连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
begin
adoConn.Close;
adoConn.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
end;
procedure sqlQurySub(sBase:string; Var adoQury: TADOQuery); //仅设定TADOQuery连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
begin
adoQury.Close;
adoQury.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
end;
procedure sqlComdSub(sBase:string; Var adoComd: TADOCommand); //仅设定TADOCommand连接串,要指定连接的数据库名, 服务器,用户,密码由全局变量设定
begin
adoComd.ConnectionString :='Provider=SQLOLEDB.1;Password='+LogPasd+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog='+sBase+';Data Source='+LogSevr;
end;
function sqlCrtDB(name,path :string; Var adoQury: TADOQuery):boolean;
//创建数据库,以master连接串登陆
//name为要创建的数据库名 path为要创建的数据库路径
var
sql :string;
rtn :boolean;
begin
rtn :=false;
adoQury.Close;
adoQury.SQL.Text :='select name from sysdatabases where name='''+name+'''';
adoQury.Open ;
if adoQury.RecordCount=0 then begin
adoQury.Close;
sql := 'CREATE DATABASE '+name+' On Primary(Name='+name+'_data, FileName='''+path+name+'.mdf'') Log On(Name='+name+'_log, FileName='''+path+name+'.ldf'')';
adoQury.SQL.Text :=sql;
adoQury.ExecSQL; //不用open和active=true, 因返回值报错
rtn :=true;
end;
adoQury.Close;
Result :=rtn;
end;
function existDB(name :string; Var adoQury: TADOQuery):boolean; //是否存在此数据库, Qury是正确连接到master库
var
rtn :boolean;
begin
rtn :=false;
adoQury.Close;
adoQury.SQL.Text :='select name from sysdatabases where name='''+name+'''';
adoQury.Open ;
if adoQury.RecordCount>0 then begin
rtn :=true;
end;
adoQury.Close;
Result :=rtn;
end;
function sqlCrtTable(flag:boolean; Var adoQury: TADOQuery):boolean; //创建数据库中的表(没有数据)
//隐含了事务处理,当字段数不正确时全不写入,当关键字重复时仅跳过重复行
//flag=true创建seei库 false创建当前库
var
sql :string;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -