继续向junlv请教(访问MS SQL SERVER数据库问题)(100分)

  • 主题发起人 主题发起人 张强
  • 开始时间 开始时间

张强

Unregistered / Unconfirmed
GUEST, unregistred user!
我是张强,非常感谢你对我上一篇问题的回答,我基本已经会用
Data Access中的Database控件了,只是还有一个地方不明白,拜托你继续帮助,好吗?问题如下:

1.我的database.ini文件是固定的,是一家软件公司开发的查询MS SQL SERVER 的dilphi 3软件的配置,我只是想利用它作一点周边的小程序,所以说我不能修改它,只能利用它。现在的问题是我的database.ini无头,即:没有[Database Setting]这句,直接就是内容,如下:
DATABASE NAME=a
SERVER NAME=abc
USER NAME=my
OPEN MODE=READ/WRITE
....
这样我就不知道 iniTempFile:=iniTempFile.ReadSectionValues ('Database Setting', dabase1.Params) ;这句该怎麽改,或者是用别的语句。请继续赐教。上一篇问题及您的解答附后。
2.我的Password是放在Password.ini文件中的,TYPE Password.ini显示的都是乱码,肯定是编译过的。这是怎麽编译出来的呢(比如密码是1234,随便教我一种编译方法可以吗?)?我在程序里又怎麽反编译,调用这个密码呢?


附:
*上一篇问题:用Dephi编程,访问MS SQL Server数据库,关于数据库的登陆配置文件为DATABASE.INI和PASWORD.INI,我想利用它们去查询SQL Server数据库,不知是不是应该使用Data Access中的Database控件,怎样用呢?我只会用Query和Table控件。
再此多谢了!
*解答:使用TDatabase控件,首先将一个TDatabase控件拖到Form上,鼠标左键双击该控件后会弹出
一个对话框,Name项随便填(最好起一个有意义的名字),Driver Name选
MSSQL,点Defaults,会出现一些类似你的ini的东东,研究一下相信你可以解决你的
问题了!将TQuery,Table的DatabaseName项指向刚才你输入的Name.
你的ini文件最好这样写,这样就更地道些:
DATABASE.INI的内容如下:
[Database Setting]
DATABASE NAME=a
SERVER NAME=abc
USER NAME=my
OPEN MODE=READ/WRITE
....

此项应和Defaults中项目一样,至于KEEPCONNECTION=1这些在单独处理好了!

干脆好人作到底给你一段代码好了,加入到你的Form的ONCreate事件中,得了:

var
iniTempFile : TiniFile;
begin

database1.Connected := false;
database1.DatabaseName := 'mydatabase';
iniTempFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Databs
e.ini');
iniTempFile.ReadSectionValues ('Database Setting', dabase1.Params) ;
//如果UserName ,password要特殊处理,
database1.Params.values['PASSWORD'] := 'ppppp'
database1.Params.values['USER NAME'] := 'sa'

iniTempFile.Free;

Query1.DatabaseName := database1.DatabaseName;
//确认数据库连接
Try
dbMain.Connected := true;
Except

End;


 
1.我看你只能自己写一个函数,分析文本,以取代ReadSectionValues();
ps:那个文件就不应该叫ini.
2.password是经过加密的,加密方法应该向那个公司要。
 
1.给段详细点的代码可以吗?
2.我并不想知道我现在的这个Password.ini的加密方法,
只想请您教我一种加密方法。
3.我是初学者且比较笨,所以请您稍微详细点。
 
1.我是初学者又比较笨,加段代码好吗?稍微详细点。
2.我并不想知道的现在的Password.ini的加密方法,只是想学到一种
随便什麽加密方法,会自己用。
 
其实.ini文件没有头没有关系,你可以这样干:

database1.Connected := false;
database1.DatabaseName := 'mydatabase';
datbase1.Params.loadFromfile('Databse.ini');
//然后删除ini文件中没有用的部分,比如:
datbase1.Params.delete(datbase1.Params.indexof('requestlive=ture'));
//或者直接删除某一行
datbase1.Params.delete(2);

//如果UserName ,password要特殊处理,
database1.Params.values['PASSWORD'] := 'ppppp'
database1.Params.values['USER NAME'] := 'sa'
Query1.DatabaseName := database1.DatabaseName;
//确认数据库连接
Try
dbMain.Connected := true;
Except

End;

关于口令的问题你只有一个办法:问!这是最简单的办法,因为该公司让你开发,他
必须保证提供你需要的资源,包括口令问题!

或者你跟踪解密它,有可能难度比较大!


 
对了,非常感谢你上个问题加的分!!

其实你可以继续在上个问题上问,这样可以节约些分数,毕竟挣点分不易呀!
(在你的问题其实还没有完全得到满意的答案之前,我有些受之有愧)

 
多人接受答案了。
 
后退
顶部