我想在DataModule的OnCreate事件中做路径连接,使TDataBase能够连接到应用程序目录下指定路径的数据库。这段代码要怎么写才好,还请各路大侠指点迷津~~
解决方案 »
- Delphi7中 Combox绑定读取问题。
- 数据库里没有数据,为什么查找说有一条记录(Access数据库)
- 求教!!!
- TREEview和DBGRID控件如何在窗体变大时或把窗体托大时,这两个控件始终填满整个窗体
- delphi里象asp的split的分割函数是什么?急!!!!!!!!!
- delphi6用adotable打开oracle的blob字段问题??????
- delphi如何将从access数据库查询出来的数据插入到excel表。。。。
- ADO控件缓存的问题
- 想用Delphi做一个Activex,在网页上取得一个域的值显示到Activex的form的一个edit里面。有那位能帮我解决这个问题啊? 在线等待!
- 如何合并EXCEL单元格,如何使单元格中的内容居中?
- 赋值的问题
- DBGRID中 如何实现点击一个按钮改变当前选中行的颜色
你说的,我不是很懂``
sDBsource, sDBUserID: String; sDBType: TDB_TYPE): Boolean;
const
lnk_ADOCONN_ORACLE = 'PLSQLRSet=1;Provider=OraOLEDB.Oracle.1;'
+ 'Password=%s;Persist Security Info=True;User ID=%s;'
+ 'Data Source=%s'; lnk_ADOCONN_SQLSERVER = 'Provider=SQLOLEDB.1;Password=%s;'
+ 'Persist Security Info=True;User ID=%s;'
+ 'Initial Catalog=%s;Data Source=%s'; lnk_ADOCONN_ACCEPT = 'Provider=Microsoft.Jet.OLEDB.4.0;'
+ 'Data Source=%s;Persist Security Info=True;'
+ 'Jet OLEDB:Database Password=%s';
begin
try
Result := true;
adoConn.Connected := false;
adoConn.ConnectionString := '';
if sDBType = dbACCEPT then
adoConn.ConnectionString :=
Format(lnk_ADOCONN_ACCEPT, [sDBName, sDBPassCode])
else if sDBType = dbSQLSERVER then
adoConn.ConnectionString :=
Format(lnk_ADOCONN_SQLSERVER,[sDBPassCode, sDBUserID, sDBName, sDBsource])
else if sDBType = dbOracle then
adoConn.ConnectionString :=
Format(lnk_ADOCONN_ORACLE, [sDBPassCode, sDBUserID, sDBsource]); adoConn.Connected := true;
adoConn.Connected := false;
except
Result := false;
end;
end;
function TDataModule1.ConnectDBProc: Boolean;
begin
Result := true; s_mta_edb_dbName := s_mta_sysPath + 'mon_xp.mdb';
s_mta_edb_pwd := 'bj2008';
s_mta_edb_DataSource := '';
s_mta_edb_UserID := '';
s_mta_edb_dbType := Integer(dbACCEPT); if not ConnectDb(ADOConnection_main,
s_mta_edb_dbName,
s_mta_edb_pwd,
s_mta_edb_DataSource,
s_mta_edb_UserID,
TDB_TYPE(s_mta_edb_dbType)) then
begin
Result := false;
SystemMsgHint(Application.Handle, '数据库连接失败!');
Exit;
end;
end;这样就可以解决你的问题了
原因:
1.用ADO的人比较多
2.ADO用起来比较简单
3.用ADO,打包软件的时候非常方便,而BDE就不那么容易了
跟不上形式 和老师说 现在商业程序开发都用ado .net 都是ado.net
你教我门读书不是要教成书呆子吧 实用的东西 主流的东西 应该才是测试对象不是吗!bde ado 有什么不同 叫法不同 用法都一样 主要控件都是query 一样的
你做出个ado 的 那个老师如果不是老糊涂 他应该还会夸你!
就象他要个access数据库 你做出个sqlserver的 oracle的 相信他就不再想考你access了
然后把path赋给database比如:path+'\data'
SERVER NAME=d:\pos.gdb //把这里改成8楼那样的相对路径 extractFileDir(application.exename)+'\ss.gdb';
USER NAME=sysdba
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=
SQLQRYMODE=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
BLOBS TO CACHE=64
BLOB SIZE=32
WAIT ON LOCKS=FALSE
COMMIT RETAIN=FALSE
ROLE NAME=
PASSWORD=masterkey 如果是Access参数如下:
DATABASE NAME=
USER NAME=
ODBC DSN=
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
SQLQRYMODE=
LANGDRIVER=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
PASSWORD=
在程序中设置相关参数代码如下:
sConnect:=TStringList.Create();
sConnect.Clear;
sConnect.Add('SERVER NAME=' + );
sConnect.Add('USER NAME=' + );
sConnect.Add('OPEN MODE=READ/WRITE');
sConnect.Add('SCHEMA CACHE SIZE=8');
sConnect.Add('LANGDRIVER=');
sConnect.Add('SQLQRYMODE=');
sConnect.Add('SQLPASSTHRU MODE=SHARED AUTOCOMMIT');
sConnect.Add('SCHEMA CACHE TIME=-1');
sConnect.Add('MAX ROWS=-1');
sConnect.Add('BATCH COUNT=200');
sConnect.Add('ENABLE SCHEMA CACHE=FALSE');
sConnect.Add('SCHEMA CACHE DIR=');
sConnect.Add('ENABLE BCD=FALSE');
sConnect.Add('BLOBS TO CACHE=64');
sConnect.Add('BLOB SIZE=32');
sConnect.Add('PASSWORD=' + password); DestDatabase.Connected:=false;
DestDatabase.Params:=sConnect;
mainform.temp.SQL.Clear;
mainform.temp.SQL.Append('select * from loginuser.db');
mainform.temp.open;
mainform.temp.First;
这里的temp是一个Tquery