书上都是这样写的,但实际用不了......(100分)

  • 主题发起人 主题发起人 abcxca
  • 开始时间 开始时间
Data Source =./mydb.mdb (当前路径下)
真的不行. 显示连接错误.
 
真不明白,有现成的ado,为什么要用ole,有理由吗?
ado一句话保证连接。
 
c#是不是沿袭了VC++中要用转换符'//'?
To duducat:Suddenly see you with pleasance.How about you these days?
 
to leeeeleeee:
并非用ado还是ole的问题,只是介绍vs.net的书中都是用这样的例子的.
所以就试试,但发觉.....问题多多.或许是我水平问题吧.所以我就上来请
高手帮忙. 但我对你的说话也有疑问,就是连vs.net的帮助文件都是用ole的,
如果它不及ado,为什么ms会推?难道vs.net根本就是一个大骗局?
to Claudia:
但具体怎样解决;
是的,在有些书中是这样写的: c://abc//mydb.mdb;
但事实是我用控件生成的连接是这样的: c:/abc/mydb.mdb;
我贴过来用,能用.谁是谁非不管它,能用就行.
 
你自己按照步骤加一次试试,出现的是绝对路径
但是可以是相对路径
 
linuxer:怎么才能联系到你,最好是QQ,有个问题想讨论一下。
 
书上不对的例子海着呢。
我也是,不知道是不是我次(和你一样c#我也遇到问题。
不过相当年,刚用delphi的时候也是一样的。)
来自:xzh2000, 时间:2003-2-16 18:57:00, ID:1625409
你用一个数据控件放在窗口上,
将属性配置好,拷贝到程序中就可以

xzh2000的方法不错,我也是这样解决的。
 
有空交流。
 
大哥们: 有谁能提供相对地址的解决方案.
<< 绝对路径:Data Source =C:/mydb.mdb
<<相对路径:Data Source =./mydb.mdb (当前路径下)
<< Data Source =./Data/mydb.mdb (exe文件所在目录下的Data目录下)

真的用不了,编译时显示不能连接数据库.
 
AppPath := ExtractFilePath(Application.ExeName);
try
ADOConnection1.Connected := false;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
AppPath + 'mydb.mdb;Persist Security Info=False';
ADOConnection1.Connected := True;
except
...
end;
//mydb.mdb与当前应用程序同一目录
 
真没有人能回答我为什么
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source =mydb.mdb" ;
要写成
string strCon =@" Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source =mydb.mdb" ;
才能联上数据库.
说明: 我是用c#写windows程序,而并非asp.net.
而vb.net 中则不需要加一个 @ .
但无论是c#或vb.net 都必需使用绝对路径,也就是说以上的语句是会出错的.
要改成:
string strCon =@" Provider = Microsoft.Jet.OLEDB.4.0 ;
Data Source =c:/abc/mydb.mdb" ;
方可;
之前各位高手所教导的方法,有的是asp的,还有delphi等的, 除此之外的,
试过也不行。
谁能回答我第一个问题是什么原因?
谁能解决第二个问题? (用相对路径或取得当前程序路径)
谁真的试过行? 给出他的代码,好吗?
 
把斜杠换个方向行不行,比如这样
相对路径:Data Source =./mydb.mdb (当前路径下)
Data Source =./Data/mydb.mdb (exe文件所在目录下的Data目录下)
 
这样可以
var
objADOXDatabase,objTable,objADOConnection: OLEVariant;
conStr,FileName:String;
begin
conStr:='Provider=Microsoft.Jet.OLEDB.4.0;
Jet OLEDB:Engine Type=5;Password="";User ID=Admin;Data Source=E:/db1.mdb';
objADOXDatabase := CreateOleObject('ADOX.Catalog');
objADOConnection:= CreateOleObject('ADODB.Connection');
objADOConnection.ConnectionString:=conStr;
objADOConnection.open;
objADOXDatabase.ActiveConnection:=(objADOConnection);
 
我查看了.net的说明文档,原来:
如果不加 @ 的话,你可能要这样写: "c://abc//mydb.mdb";
但如果在string 类型之前加个 @ ,你就可以这样写: @"c:/abc/mydb.mdb";
呵呵.或许这是ms$专为delphi程序员设的.
关于当前目录的问题,则有两个办法可行:
1.
string strCon=@"Provider= Microsoft.Jet.OLEDB.4.0;Data Source=";
strCon+=@Directory.GetCurrentDirectory()+@"/mydb.mdb";
2.
string strCon=@"Provider= Microsoft.Jet.OLEDB.4.0;Data Source=";
strCon+=@Environment.CurrentDirectory+@"/mydb.mdb";

1方法的 Directory.GetCurrentDirectory() 使用System.IO 命名空间.
2方法的 Environment.CurrentDirectory 则是使用System 命名空间.
以上是复杂的方法,更简单的办法是:
string strCon=@"Provider= Microsoft.Jet.OLEDB.4.0;Data Source=";
strCon+=@"mydb.mdb";

但其实以上的问题都不是问题,问题是.net的运行程序根本就不是在工程文件所在的
目录,而是在: 工程目录/bin/Debug 下 (调试阶段)
所以,只要把数据库copy到 工程目录/bin/Debug 目录下,就用以下这一句就ok了.
string strCon="Provider= Microsoft.Jet.OLEDB.4.0;Data Source=mydb.mdb";
书上说的都是对的. 但这一点点细节也较让你烦的.
希望以后那些"水平高"得要出书的人说得明白一点.



 
Server.MapPath("mydb.mdb")才对.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部