demo1.pas
Upload User: zfeng_2008
Upload Date: 2007-02-25
Package Size: 5k
Code Size: 2k
Category:

ADO-ODBC

Development Platform:

Delphi

  1. unit demo1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls,Registry;
  6. type
  7.   TForm1 = class(TForm)
  8.     Label1: TLabel;
  9.     Label2: TLabel;
  10.     Edit1: TEdit;
  11.     Edit2: TEdit;
  12.     Button1: TButton;
  13.     memo1: TMemo;
  14.     procedure Button1Click(Sender: TObject);
  15.   private
  16.     { Private declarations }
  17.   public
  18.     { Public declarations }
  19.   end;
  20. var
  21.   Form1: TForm1;
  22. implementation
  23. {$R *.dfm}
  24. procedure TForm1.Button1Click(Sender: TObject);
  25. var
  26. registerTemp : TRegistry;
  27. bData : array[ 0..0 ] of byte;
  28. begin
  29. registerTemp := TRegistry.Create; //建立一个Registry实例
  30. with registerTemp do
  31. begin
  32. RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE
  33. //找到SoftwareODBCODBC.INIODBC Data Sources
  34. if OpenKey('SoftwareODBCODBC.INIODBC Data Sources',True) then
  35. begin //注册一个DSN名称
  36. WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );
  37. end
  38. else
  39. begin//创建键值失败
  40. memo1.lines.add('增加ODBC数据源失败');
  41. exit;
  42. end;
  43. CloseKey;
  44. //找到或创建SoftwareODBCODBC.INIMyAccess,写入DSN配置信息
  45. if OpenKey('SoftwareODBCODBC.INIMyAccess',True) then
  46. begin
  47. WriteString( 'DBQ', edit2.text );//数据库目录
  48. WriteString( 'Description', '我的数据库设置' );//数据源描述
  49. WriteString( 'Driver', 'C:WINNTSYSTEM32odbcjt32.dll' );//驱动程序DLL文件
  50. WriteInteger( 'DriverId', 25 );//驱动程序标识
  51. WriteString( 'FIL', 'Ms Access;' );//Filter依据
  52. WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
  53. WriteString( 'UID', '' );//用户名称
  54. bData[0] := 0;
  55. WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
  56. WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
  57. end
  58. else//创建键值失败
  59. begin
  60. memo1.lines.add('增加ODBC数据源失败');
  61. exit;
  62. end;
  63. CloseKey;
  64. //找到或创建SoftwareODBCODBC.INIMyAccessEnginesJet
  65. //写入DSN数据库引擎配置信息
  66. if OpenKey('SoftwareODBCODBC.INIMyAccessEnginesJet',True) then
  67. begin
  68. WriteString( 'ImplicitCommitSync', 'Yes' );
  69. WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
  70. WriteInteger( 'PageTimeout', 10 );//页超时
  71. WriteInteger( 'Threads', 3 );//支持的线程数目
  72. WriteString( 'UserCommitSync', 'Yes' );
  73. end
  74. else//创建键值失败
  75. begin
  76. memo1.lines.add('增加ODBC数据源失败');
  77. exit;
  78. end;
  79. CloseKey;
  80. memo1.lines.add('增加新ODBC数据源成功');
  81. Free;
  82. end;
  83. end;
  84. end.