如何在程序中利用ini动态连接access和sql数据库,高分求完整代码,不够再给!
最近做毕业设计,要求我们利用ini动态连接不同类型的数据库,要求在一个程序中可以自由选择数据库的类型,在连接sql时要求先判断ini中的连接是否有效,无效时,自动跳出连接对话框,对话框要自动检测本机及局域网中可用的sql服务器,并将服务器名、数据库、自动列表到combox中,然后输入用户名和密码进行测试,测试通过后,要自动保存到ini中。
代码要有说明文档要,将完整代码发给我,[email protected],我是菜鸟:)
最近做毕业设计,要求我们利用ini动态连接不同类型的数据库,要求在一个程序中可以自由选择数据库的类型,在连接sql时要求先判断ini中的连接是否有效,无效时,自动跳出连接对话框,对话框要自动检测本机及局域网中可用的sql服务器,并将服务器名、数据库、自动列表到combox中,然后输入用户名和密码进行测试,测试通过后,要自动保存到ini中。
代码要有说明文档要,将完整代码发给我,[email protected],我是菜鸟:)
解决方案 »
- findfirst函数不能遍历网络邻居中的共享文件夹,请问实现如何实现这样的功能??
- 购买WINDDOWS ISCSI target服务器原代码
- 问个简单问题,在线等
- 怎样替换可执行文件中的资源?关于UpdateResource这个API
- 除了使用COM外,怎么可以使用字典??
- 在主明细表中显示页数--实现每个明细表重新计页数的问题--多谢
- 小问题,调试通过马上结帖
- 李维分布式多层应用系统篇书中的例子
- 请问用 QRPreview 自定义预览时怎样实现“上一页”、“下一页”?
- 难题,高手快来帮忙!(Delphi)
- 大家帮帮忙,我给这个问题想到头都快炸了!
- 如何在程序中利用ini动态连接access和sql数据库,高分求完整代码,不够再给!
type
pDword = ^DWord;
NET_API_STATUS = DWORD;
SERVER_INFO_100 = record
sv100_platform_id : DWord;
sv100_name : pwidechar;
end; PSERVER_INFO_100 = ^SERVER_INFO_100;
LPSERVER_INFO_100 = ^SERVER_INFO_100;
ASERVER_INFO_100 = array of SERVER_INFO_100; SERVER_INFO_101 = record
sv101_platform_id : dword;
sv101_name : pwidechar;
sv101_version_major : Dword;
sv101_version_minor : Dword;
sv101_type : dword;
sv101_comment : pchar;
end; PSERVER_INFO_101 = ^SERVER_INFO_101;
LPSERVER_INFO_101 = ^SERVER_INFO_101;
ASERVER_INFO_101 = array of SERVER_INFO_101; function NetServerEnum(servername : pchar; level : Dword; var bufptr;prefmaxlen : integer; entriesread : pDword; totalentries : pDword;servertype : DWord; domain : pwidechar; resume_handle : integer):NET_API_STATUS ; stdcall; external 'netapi32.dll' name 'NetServerEnum'; function NetApiBufferFree (Buffer : pointer) : NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetApiBufferFree';const
SV_TYPE_SQLSERVER = $00000004;
procedure GetSqlServerName(ts:TStrings);
var
pBuf : pByte;
aBuf : ASERVER_INFO_100;
dwEntriesRead : DWORD;
dwTotalEntries : DWORD;
dwServerType : DWORD;
i: DWORD;
name :string;
begin
pBuf := nil;
dwEntriesRead := 0;
dwTotalEntries := 0;
dwServerType := SV_TYPE_SQLSERVER; // all servers
NetServerEnum(nil, 100, pBuf, -1,
@dwEntriesRead, @dwTotalEntries, dwServerType, nil, 0);
aBuf := ASERVER_INFO_100(pBuf);
for i := 0 to dwEntriesRead - 1 do
begin
name := aBuf[i].sv100_name;
ts.Add(Name);
end;
if Assigned(pBuf) then NetApiBufferFree(pBuf);
end;
要是用EBD感觉用的可能性还是有的
靠,紧点慢点还是发出了
var
iniFile:tiniFile;
begin
inifile:=tinifile.Create('.\Config.ini');
try
with inifile do
begin DatabaseIP:= ReadString('Vip_Config','ServerIP_Vip','');
DataBaseName:= ReadString('Vip_Config','DataBaseName_Vip','');
DataBaseUserID:= ReadString('Vip_Config','UserID_Vip','');
DataBasePwd:= ReadString('Vip_Config','Pwd_Vip',''); end;
finally
inifile.Free;
end;end;
上面的是读取INI文件的,然后,在你程序的CREATE中 ReadFromINI(DatabaseIP,DataBaseName,DataBaseUserID,DataBasePwd);
Str :='Provider=SQLOLEDB.1;Persist Security Info=True;';
Str :=Str+'Data Source='+DatabaseIP+';';
Str :=Str+'Initial Catalog='+DataBaseName+';';
Str :=Str+'User ID='+DataBaseUserID+';';
Str :=Str+'Password='+DataBasePwd+';';
//Str :=Str+'Workstation ID='+DatabaseIP+';';
//Str :=Str+'Extended Properties="Use Encryption for Data=False;Tag with column collation when possible=False";';
//Str :=Str+'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
//Str :=Str+'Use Encryption for Data=False;Tag with column collation when possible=False';
Clipboard.AsText :=Str;
ADOConnection1.Close;
ADOConnection1.ConnectionString :='';
ADOConnection1.ConnectionString :=Str;
ADOConnection1.Open;基本就OK至于怎么写入INI文件,就自己找吧,遍地都是!
function WhatColor(name, Default: String) : TColor;varval : String;myIni: TIniFile;beginmyIni := TIniFile.Create(INI_FILE);val := UpperCase(myIni.ReadString(COLOR_SECTION,name,default));myIni.Free;if val = 'MAROON' then WhatColor := clMaroon elseif val = 'GREEN' then WhatColor := clGreen elseif val = 'OLIVE' then WhatColor := clOlive elseif val = 'NAVY' then WhatColor := clNavy elseif val = 'PURPLE' then WhatColor := clPurple elseif val = 'TEAL' then WhatColor := clTeal elseif val = 'GRAY' then WhatColor := clGray elseif val = 'SILVER' then WhatColor := clSilver elseif val = 'RED' then WhatColor := clRed elseif val = 'LIME' then WhatColor := clLime elseif val = 'YELLOW' then WhatColor := clYellow elseif val = 'BLUE' then WhatColor := clBlue elseif val = 'FUCHSIA' then WhatColor := clFuchsia elseif val = 'AQUA' then WhatColor := clAqua elseif val = 'WHITE' then WhatColor := clWhite elseWhatColor := clBlack;end;