主题:急!delphi+sql server的问题
triumph
[专家分:160] 发布于 2006-06-27 17:19:00
请问大家做服务器版本的信息管理系统是怎么做的啊
客户端的应用程序是怎么能够访问到服务器的数据库的啊?
我用的数据库是用sql server2000 做的
回复列表 (共1个回复)
沙发
物质人 [专家分:1190] 发布于 2006-06-28 15:40:00
ODBC
也可以直接连接,连接数据库的语句到网上随便就查到 Dephi连接SQLserver2000的语句
1.BDE
这是使用Delphi最多的一种方式,建立一个BDE别名可以在控制面板中的BDE Administration中添加,不过我习惯在SQL Explorer中建立,因为建立之后直接可以执行建表的脚本了。
你可以在SQL Explorer中左边的别名列表中点击右键,并选择要连接的数据库种类,并在之后BDE建立的连接参数中填入必要的信息,注意,当你选择不同的数据库时,右边的参数有少许的不同,这些参数的不同是由于不同数据库所要求的参数不同造成的,例如SqlServer需要输入服务器的名称,数据库的名称。
BDE能够连接我所使用过的所有的数据库,当然有些是通过ODBC来连接的。
在发布程序时,必须发布BDE引擎。用InstallShield Express可以很方便的做这件事情
BDE的别名也可以在Delphi程序中动态的检查有无并建立之。我通常用TSession组件来Do It。
2.ODBC
这是Ms的产品。
如果你在ODBC中建立了一个DSN连接,那么你的Delphi程序还是需要使用BDE来连接它,但是此时不需要用上一步中的手动建立别名,BDE会将ODBC中的所有别名自动在BDE中建立相同名称的别名,并且它是删不掉的,除非你删掉ODBC的DSN。
这种方式的实际是程序通过BDE,再通过ODBC,才连接到数据库。
在早期使用Aceess时,我通常使用这种方式。因为那时候还没有ADO。
同样在使用IBM UDB时,我也用这种方式,因为在使用BDE直接连接时,在SQL Explorer中将不能枚举数据库中的表,而ODBC可以。
AS/400也可以使用这种方式来连接...
大型关系型数据库都提供ODBC驱动。在建立ODBC源时,都会调用其本身的配置,不同的数据库也是不同的。
ODBC源也可以在程序用代码写入注册表中,来生成一个DSN.
3.ADO
这是ODBC的升级版本,通常也叫做mdac ,我用过的最新版本是2.7,现在应该更高。在使用ms的数据库SqlServer,Access时,推荐使用这个东西,因为他从win98开始就集成在操作系统中,并且以连接字符串的形式提供所有参数,发布系统时不需要在程序之外做其他的工作。
它也提供包括一些类数据库的连接,例如Excel。
值得一提的是在连接有密码的Access时,Delphi的Ado向导生成的连接字符传是有Bug的,其生成的password子项是password='xxx';这个样子,但是这将不能连接,手动将其改成Jet Oledb password='xxx';(好像是这样,记不清了).
4.DbExpress
这是Borland提供的最新的数据库引擎,目前提供的驱动有限,我只用它成功测试过IBM UDB,在网上可以找到第3方的连接AS/400的驱动。
它是一个提供单向游标的引擎,Borland称相对于BDE,具有更高的效率。并且在以后将发展它,而停止BDE的更新。
通常在使用这种方式时,应该用DataSnap(以前叫Midas)技术来提供双向游标的应用,并且用TClientDataset的Data,Delta属性来灵活的序列化Dataset,而实现多层松耦合系统。
5.第3方的驱动
这些我一个都没在实际 中使用过,通常以组件的形式提供,我所知的如连接Oracle的Odac,连接As/400的Delphi400。。。
最后现在如果可能,应尽量使用ADO来连接系统,并且用DataSnap来操作本地数据集来实现多层系统。
各种数据库连接代码
MS Access数据库连接
用DSN连接并且没有用户名和密码:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName"
%>
用DSN连接并且有用户名和密码:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "YourDSNName","username","password"
%>
用实际的数据库绝对路径连接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=e:\yanhang\database.mdb"
conn.Open Strconn
%>
用实际的数据库相对路径连接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Strconn="DRIVER={Microsoft Access Driver (*.mdb)}; "
Strconn=Strconn & "DBQ=" & Server.MapPath("/database/yanhang.mdb")
conn.Open Strconn
%>
MS SQL Server数据库连接
用DSN连接:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=MyDSN;UID=user;PWD=password;DATABASE=databasename"
%>
不用DSN连接:
<%
Set conn = Server.CreateObject("ADODB.Connection")
DSNtemp="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=databasename"
conn.open DSNtemp
%>
FoxPro数据库连接
<%
Set Conn = Server.CreateObject("ADODB.connection")
ConnStr= "Driver=Microsoft Visual Foxpro Driver; UID=userID;SourceType=DBC;SourceDB=C:\yanhang\database.dbc"
Conn.Open ConnStr
%>
Oracle数据库连接:
<%
set conn=server.createobject("adodb.connection")
conn.cursorlocation=adUseClient
DSNTemp="Provider=MSDAORA.1;Password=xxxxx;User ID=yanhang;Data Source=xxx.world"
conn.open DSNtemp
%>
我来回复