unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, GridsEh, DBGridEh, DBGridExt, StdCtrls,
Buttons;
type
TForm2 = class(TForm)
dsData: TADODataSet;
stat1: TStatusBar;
dbgrdxt1: TDBGridExt; //在object inspector 里DataSource属性里添加 ds1
btn1: TBitBtn;
conConnectionSqlServer: TADOConnection;
ds1: TDataSource;
function ExecutesqlReturnRecord(const sql :string):TADODataSet;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
bDBisConnected:Boolean;
public
{ Public declarations }
function DbConnect:Boolean;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
function TForm2.DbConnect:Boolean;//封装一个数据库连接函数
begin
Result := false;
if not bDBisConnected then
begin
with dsData do
begin
//TADOConnection 和 TADODataSet 都有 ConnectionString 属性 TADODataSet允许直接连接数据库
Connection.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=testDB;password =123456;Data Source=LJF-PC\LJF';
try
//Connection.Create(nil);
Connection.ConnectionTimeout := 20;
Connection.CommandTimeout := 30 ;
Connection.Connected:=True;
Result := True;
bDBisConnected := True;
except
Result :=False;
bDBisConnected := False;
ShowMessage('not connected'); //
raise;
// Exit;
end;
end;
end else
Result := True;
end;
function TForm2.ExecutesqlReturnRecord(const sql :string):TADODataSet;
var
lCursor: TCurSor;
begin
Result := nil;
try
Result := TAdoDataset.Create(nil);
Result.Connection := dsData.Connection;
Result.LockType := ltUnspecified; //用来设置或取得Dataset打开时,记录如何锁定 1 ltUnspecified不指定锁定类型 ltReadOnly只读 ltBatchOptimistic 批量优化锁定....
Result.CommandTimeout := 1800;
if bDBisConnected then
begin
Result.Close;
Result.CommandText := sql;
lCursor := Screen.Cursor;
Screen.Cursor := crSQLWait;
try
Result.Open;//Derived from TDataSet //open相当于将active属性设置为true,Dataset状态为打开,也将触发一些相应的事件 ,数据集状态为dsBrowse
Screen.Cursor := crArrow;
except
on E: Exception do
begin
ShowMessage(E.Message);
raise;
end;
end;
end;
;
except
on E: Exception do
begin
ShowMessage(E.Message);
raise;
end;
end;
end;
procedure TForm2.btn1Click(Sender: TObject);
begin
dbgrdxt1.ClearColWidthList;
dbgrdxt1.DataSource.DataSet := ExecutesqlReturnRecord('SELECT [ID],[name],[score] FROM [testDB].[dbo].[stu]');
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
if DbConnect then
stat1.Panels[0].Text := '数据库已连接!'
else
stat1.Panels[0].Text := '数据库未连接!';
end;
end.