未找到Delphi数据库microsoft odbc管理器数据源名称,且不是默认驱动程序
在完成本教程之后,我在下面的delphi代码中遇到此错误:。我见过其他解决方案,但我不确定它们的真正含义或我应该实际做什么。我想知道是否有人能看到是否有明显的问题或解释我应该检查什么。我在ADOConnection1:=TADOConnection.create(nil)行上遇到错误 [Microsoft][ODBC MANAGER]未找到数据源名称,未指定默认驱动程序未找到Delphi数据库microsoft odbc管理器数据源名称,且不是默认驱动程序,delphi,ms-access,Delphi,Ms Access,在完成本教程之后,我在下面的delphi代码中遇到此错误:。我见过其他解决方案,但我不确定它们的真正含义或我应该实际做什么。我想知道是否有人能看到是否有明显的问题或解释我应该检查什么。我在ADOConnection1:=TADOConnection.create(nil)行上遇到错误 [Microsoft][ODBC MANAGER]未找到数据源名称,未指定默认驱动程序 假设您的Project1db.accdb已经存在于E:\Project中,设置 您的ADO连接如下所示: 在IDE中,单击您的
假设您的
Project1db.accdb
已经存在于E:\Project
中,设置
您的ADO连接如下所示:
在IDE中,单击您的AdoConnection
,并将其LoginPrompt
属性设置为False
单击ConnectionString
属性中的[…]
按钮
在ConnectionString弹出窗口中,单击使用连接字符串
单选按钮,然后
单击其下方的Build
按钮
在提供程序
选项卡上,将提供程序类型设置为
Microsoft.ACE.OLEDB.12.0
在连接选项卡上,将数据源设置为
e:\Project\Project1db.accdb
然后单击测试连接
按钮。你应该得到一个确认的弹出窗口
连接成功
如果Project1DB.accdb文件不存在,您可以使用@Victoria的来创建它,例如使用此链接来创建它,或者使用MS Access来创建它。但是您仍然需要类似于现有代码的东西来打开数据库
正如我在评论中所说,您不应该调用ADOConnection1:=TAdoConnection.Create(Nil)
,因此删除该行和ADOConnection1.Free
。我希望您现在能够理解,您可以使用对象检查器来配置AdoConnection等
顺便说一句,如果我昨天对你的一个问题的评论把你弄糊涂了,让你尝试使用ODBC,我很抱歉(如果你是机器的管理员,这很好,但是如果你不是,这可能会更棘手)。要使用现有的ODBC数据源,您需要将AdoConnection的提供程序类型设置为类似于Microsoft OLE DB Provider for ODBC Drivers
,而不是任何特定于Access的提供程序-ODBC是处理各种不同类型数据库(包括Access)的通用方法。顺便说一句,您可以使用ODBC dsn创建Access数据库,作为根据文章@Victoria linked使用ADOX对象创建数据库的替代方法。我们读者看不到您的屏幕:您的代码的哪一行导致了错误?顺便说一句,你的代码中有一个基本错误:当你的应用程序启动时,你在表单上放置的Button1和ADOConnection1等组件会自动创建,当它关闭时会释放。因此,您不需要(也不应该包括)您的ADOConnection1:=TADOConnection.Create(nil)
您的数据源
参数只指向不存在的数据源。数据源是您可以在中配置的。我不是我所在计算机的管理员,因为它是学校计算机。你会建议怎么做呢?我应该使用OLE吗?试试。@Victoria:实际上,在我的Win10设置中,Jet提供程序似乎不想打开Access2016.accdb文件。几分钟后,我将发布一组关于如何为她的示例数据库配置AdoConnection的说明。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ADODB,Stdctrls, DB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
procedure createdb;
procedure closedb;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.createdb;
var
nameDB:string;
connectionstring:string;
begin
connectionstring:='Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=E:\Project;';
namedb:='Project1db.accdb';
ADOConnection1:=TADOConnection.Create(nil);
ADOConnection1.LoginPrompt:=false;
ADOConnection1.Connected:=true;
ADOConnection1.Execute('CREATE DATABASE IF NOT EXISTS
Project1db.accdb',cmdtext);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
createdb;
closedb;
end;
Procedure TForm1.closedb;
begin
ADOConnection1.Free;
end;
end.