我用ole db 的方式连接了odbc数据源,但是有个问题:
odbc的数据源是事先在控制面板里设置好了的,程序的移植性不强,我想请教一下那位大虾知道用程序的方法修改或者设置odbc数据源。
odbc的数据源是事先在控制面板里设置好了的,程序的移植性不强,我想请教一下那位大虾知道用程序的方法修改或者设置odbc数据源。
解决方案 »
- TreeView里OverlayIndex在节点Move后的问题
- 数据库连接超时的问题
- 创建作业的问题(十分古怪),泣求答案,大把散分
- 如何在stringgrid的单元格焦点转换问题
- 大家推荐几本DELPHI的入门经典吧,急得很,谢谢大家拉!
- 高分:请问用query怎么给某条数据或表加锁,然让其他用户以只读的方式查看呢?
- 怎么得怎么办才能改更系统颜色(如将真彩16色更改为真彩32色或256色等)
- 如何在程序中作出windows xp 风格的窗体,希望各位大哥多多指教!
- FRegistry是一个控件吗?是的话,它放在哪里啊。怎么找不到?
- 数据库查询
- delphi连接oracle 怎么样连接?
- 怎样使用utf8tounicode,UnicodeToUtf8 这些函数,最好有例子
USES Registry; procedure TForm1.Button1Click(Sender: TObject);
var
Temp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
Temp := TRegistry.Create; //建立一个Registry实例
with Temp do
begin
RootKey:=HKEY_LOCAL_MACHINE; //设置根键值为HKEY_LOCAL_MACHINE //打开键名 software\ODBC\ODBC.INI\ODBC Data Sources,不存在则建立 if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then begin //注册一个DSN名称
WriteString( 'myaccess97', 'Microsoft Access Driver (*.mdb)' ); end
else
begin//创建键值失败
SHOWMESSAGE('增加ODBC数据源失败');
exit;
end;
CloseKey; //找到或创建Software\ODBC\ODBC.INI\myaccess97,写入DSN配置信息
if OpenKey('Software\ODBC\ODBC.INI\myaccess97',True) then
begin
WriteString( 'DBQ', 'C:\test.mdb' );//数据库目录
WriteString( 'Description','我的新数据源' );//数据源描述
WriteString( 'Driver', 'C:\WINDOWS\SYSTEM\odbcjt32.dll' );//驱
动程序DLL文件 ODBCJT32.DLL文件依据你的存放路径
WriteInteger( 'DriverId', 25 ); //驱动程序标识
WriteString( 'FIL', 'Ms Access;' );
//Filter依据
WriteInteger( 'SafeTransaction', 0 ); //支持的事务操作数目 //若不存在用户,则为下面一句:
WriteString( 'UID', '' );//用户名称,若存在用户,则写入用户名
//若存在用户和密码,则为下面二句:
WriteString( 'UID', 'hns' ); //用户名
WriteString( 'PWD', '199911' );//口令
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 ); //是否以独占方式打
开,1为是,默认为0
WriteBinaryData( 'ReadOnly', bData, 1 ); //是否以只读方式打
开,1为是,默认为0
end
else//创建键值失败
begin
showmessage('增加ODBC数据源失败');
exit;
end;
CloseKey;
// 找到或创建Software\ODBC\ODBC.INI\myaccess97\Engines\Jet 写入D
SN数据库引擎配置信息
if OpenKey('Software\ODBC\ODBC.INI\myaccess97\Engines\Jet',True)
then
begin
WriteString( 'ImplicitCommitSync', 'Yes' ); //表示是否立即反映数
据修改
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' ); //表示是否立即将数据修改
反映到用户
end
else//创建键值失败
begin
showmessage('增加ODBC数据源失败');
exit;
end;
CloseKey;
showmessage('增加新ODBC数据源成功');
Free;
end;
end;
Try
MainConnection.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\DB\UniCom.mdb;Mode=Share Deny None;';
MainConnection.Connected :=True;
Except
Application.MessageBox('不能连接到系统数据库!','错误',MB_OK OR MB_ICONERROR);
Application.Terminate;
end;