怎样动态生成ODBC数据源(用代码实现)还有:
setlength(array_operator, recordcount);
setlength(array_password, recordcount);
这两行代码是什么意思!!!!!!!!
setlength(array_operator, recordcount);
setlength(array_password, recordcount);
这两行代码是什么意思!!!!!!!!
解决方案 »
- 奇怪问题,自动备份数据库时,鼠标点击有效,用winexec无效?
- 有三个tabsheet如何确定当前页是在第几页?
- 设计erp时,如何解决由于多人操作引起的数据的完整性,一致性
- 想修改后再显示出来 ,但是运行出错
- 如何异地计算机像局域网访问?
- 请问在一个MDI窗体菜单中,如何做一个DLL
- 高手请进!在OLEcontainter 控件中所画的图形如何保存到数据库中!
- 查找当前目录及子目录下的包含字符串的所有文本文件
- 为什么在数据库里NULL=NULL 不成立
- 请众位高手指点迷津,如何实现数据库的过滤,用RadioGroup 与 Edit 作为查找字段
- 大家看看这段代码怎么实现?(动态指定数据源)
- listview图标---ShGetFileInfo
BDE的
DATABASE
QUERY连接数据源,怎样用代码动态生成ODBC数据源
setlength(array_operator, recordcount);
setlength(array_password, recordcount);是设置动态数组的长度
sDBName 数据库名称(SQL Server)
sMess ODBC的解释,可以为空
sUser 连接数据库的用户名称
bISClient 数据库是否在本地(在本地=false)
sServerName 数据库服务器的IP地址
sPort 端口号(缺省为1433)unit HCPUB_ODBC;
interface
uses Windows, SysUtils;//创建一个ODBC连接
function CreateODBCDSN(sODBCName, sDBName, sMess, sUser: string;
bISClient: Boolean; sServerName: string = ''; sPort: string = '1433'): Boolean;implementationuses Registry;function CreateODBCDSN(sODBCName, sDBName, sMess, sUser: string;
bISClient: Boolean; sServerName: string = ''; sPort: string = '1433'): Boolean;
var
RegF: TRegistry;
mybuffer: pchar;
mySyspath: string;
myServerName: string;
myServerNameVal: string;
begin
try //配置ODBC sODBCName为ODBC数据源名称
RegF := TRegistry.Create;
try
RegF.RootKey := HKEY_LOCAL_MACHINE;
begin
RegF.OpenKey('SOFTWARE\ODBC\ODBC.INI\' + trim(sODBCName), true);
RegF.Writestring('AnsiNPW', 'No');
RegF.Writestring('Database', trim(sDBName));
RegF.Writestring('Description', sMess);
try //得到sqlsrv32.dll路径
mybuffer := allocmem(255);
mySyspath := string(mybuffer);
freemem(mybuffer);
mySyspath := mysyspath + '\sqlsrv32.dll';
except
mySyspath := 'C:\WINDOWS\SYSTEM\sqlsrv32.dll';
end;
RegF.Writestring('Driver', mySyspath);
RegF.Writestring('LastUser', trim(sUser));
RegF.Writestring('QuotedId', 'No');
if bISClient then
begin
myServerName := trim(sServerName);
end
else
begin
myServerName := '(local)';
end; RegF.Writestring('Server', myServerName);
RegF.Closekey;
RegF.OpenKey('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources', true);
RegF.Writestring(sODBCName, 'SQL Server');
RegF.Closekey;
RegF.OpenKey('SOFTWARE\microsoft\MSSQLServer\Client\ConnectTo', true);
if bISClient then
begin
myServerName := trim(sServerName);
end
else
begin
myServerName := '.';
end; myServerNameVal := 'DBMSSOCN,' + myServerName + ',' + sPort;
RegF.Writestring(myServerName, myServerNameVal);
end;
finally
RegF.Closekey;
RegF.Free;
Result := true;
end;
except
Result := false;
end;
end;end.