⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 本人现在上传的资料是关于SQL SEVER数据库管理系统存取文件的。
💻 PAS
字号:
{
  SQL Server 数据库存取文件实例!
  注意:请先连接数据库!然后打开数据库表
  Design By Rainey kwbin@Delphi盒子
  E-Mail: kwbin@163.com
}
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    edtFileName: TEdit;
    btnBrowse: TButton;
    OpenDialog1: TOpenDialog;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    btnAdd: TButton;
    btnView: TButton;
    ADOTable1: TADOTable;
    Panel1: TPanel;
    edtServer: TEdit;
    edtUser: TEdit;
    edtPwd: TEdit;
    edtDB: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    GroupBox1: TGroupBox;
    Label7: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    ADOQuery1: TADOQuery;
    Button2: TButton;
    Button3: TButton;
    StatusBar1: TStatusBar;
    procedure btnBrowseClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnViewClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure ADOConnection1AfterConnect(Sender: TObject);
    procedure ADOTable1AfterOpen(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
const SQLCSTR = 'Provider=SQLOLEDB.1;' +
  'Password=%s;' //密码
  + 'Persist Security Info=True;'
    + 'User ID=%s;' //用户名
  + 'Initial Catalog=%s;' //数据库
  + 'Data Source=%s'; //服务器

implementation
uses ShellAPI;
{$R *.dfm}

procedure TForm1.btnBrowseClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    edtFileName.Text := OpenDialog1.FileName;
end;

procedure TForm1.btnAddClick(Sender: TObject);
var
  fs: TFileStream;
  ext: string;
begin
  if not FileExists(edtFileName.Text) then
  begin
    Application.MessageBox(PChar('找不到文件' + edtFileName.Text), '错误', MB_ICONERROR);
    Exit;
  end;
  ext := ExtractFileExt(edtFileName.Text); //取出文件的扩展名
  fs := TFileStream.Create(edtFileName.Text, fmOpenRead);
  ADOTable1.Append;
  try
    ADOTable1.FieldByName('ext').AsString := ext;
    fs.Position := 0;
    TBlobField(ADOTable1.FieldByName('document')).LoadFromStream(fs);
    ADOTable1.Post;
  finally
    fs.Free;
  end;
end;

procedure TForm1.btnViewClick(Sender: TObject);
var filename, dir: string;
begin
  dir := ExtractFilePath(ParamStr(0)) + 'temp';
  if not DirectoryExists(dir) then
    CreateDir(dir);
  try
    fileName := dir + '\temp' + ADOTable1.FieldByName('id').AsString
      + ADOTable1.FieldByName('ext').AsString;
    TBlobField(ADOTable1.FieldByName('document')).SaveToFile(fileName);
    ShellExecute(handle, 'Open', PChar(fileName), nil, nil, SW_NORMAL);
  finally
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    ADOConnection1.ConnectionString := Format(SQLCSTR, [edtPwd.Text, edtUser.Text, edtDB.Text, edtServer.Text]);
    ADOConnection1.Open;
  except
    on E: Exception do
      Application.MessageBox(PChar('无法连接数据库!请检查数据库服务器是否打开以及数据库名称是否存在!'
        + #10#13 + '系统错误信息:' + E.Message), PChar(Caption), MB_ICONWARNING);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  try
    //如果表不存在则创建一张表BlobTable
    ADOQuery1.SQL.Text := 'CREATE TABLE [BlobTable] ('
      + '	[id] [smallint] IDENTITY (1, 1) NOT NULL ,'
      + '	[document] [image] NULL ,'
      + '	[ext] [char] (10) COLLATE Chinese_PRC_CI_AS NULL'
      + ') ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ';
    ADOQuery1.ExecSQL;
    Application.MessageBox('数据表创建成功!', '', MB_ICONINFORMATION);
  except
    Application.MessageBox('数据表创建失败!请确认数据库中是否已经存在数据表BlobTable!', '', MB_ICONWARNING);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  //打开这张表
  ADOTable1.TableName := 'BlobTable';
  ADOTable1.Open;
end;

procedure TForm1.ADOConnection1AfterConnect(Sender: TObject);
begin
  StatusBar1.Panels.Items[0].Text := '数据库连接成功!'
end;

procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
  StatusBar1.Panels.Items[1].Text := '数据表BlobTeble连接成功!'
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -