笔者在用delphi2005调试其自带例子的DBWebFilterSample时遇到以下问题:若BdpDataAdapter1的active属性设为true,编译运行出现以下错
误
“/DBWebFilterSample”应用程序中的服务器错误。
--------------------------------------------------------------------------------
Connection open failed. unavailable database
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: Borland.Data.Common.BdpException: Connection open failed. unavailable database源错误: 行 288:
Self.DBWebDataSource1.ErrorDlgForeColor := System.Drawing.Color.Black;行 289: Include(Self.Load, Self.Page_Load);行 290:
(System.ComponentModel.ISupportInitialize(Self.BdpDataAdapter1)).EndInit;行 291:
(System.ComponentModel.ISupportInitialize(Self.Employees)).EndInit;行 292:
(System.ComponentModel.ISupportInitialize(Self.DataTable1)).EndInit;
源文件: G:\Program Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas 行: 290 堆栈跟踪: [BdpException:
Connection open failed. unavailable database] Borland.Data.Provider.BdpDataAdapter.e()
Borland.Data.Provider.BdpDataAdapter.EndInit() WebForm1.TWebForm1.InitializeComponent() in G:\Program
Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas:290 WebForm1.TWebForm1.OnInit(EventArgs e) in
G:\Program Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas:344
System.Web.UI.Control.InitRecursive(Control namingContainer) System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 若BdpDataAdapter1的Active
属性设为false,出现以下错误:
“/DBWebFilterSample”应用程序中的服务器错误。
--------------------------------------------------------------------------------
输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.FormatException: 输入字符串的格式不正确。源错误: 行 325: else行 326: sCurrentFilter :=
Convert.ToString(o);行 327: StartCustId := Convert.ToInt16(ListBox1.SelectedValue);行 328: EndCustId :=
Convert.ToInt16(ListBox2.SelectedValue);行 329: if StartCustId < EndCustId then
源文件: G:\Program Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas 行: 327 堆栈跟踪: [FormatException:
输入字符串的格式不正确。] System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +0
System.Int16.Parse(String s, NumberStyles style, IFormatProvider provider) +37 System.Convert.ToInt16(String value) +19
WebForm1.TWebForm1.Page_Load(Object sender, EventArgs e) in G:\Program
Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas:327 System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive() System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
由于我测试重点是用delphi2005实现web查询,对以上小错误稍加修改,编译运行不出现错误,但不显示任何数据。为了让其显示数据,笔者自
行在webform1设计窗体加入一个按钮,在按钮事件中加入以下代码:
if not BdpDataAdapter1.Active
thenBdpDataAdapter1.Active:=true;
编译运行点击此按钮,出现以下错误:
“/DBWebFilterSample”应用程序中的服务器错误。
--------------------------------------------------------------------------------
Connection open failed. unavailable database
说明: 执行当前Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:
Borland.Data.Common.BdpException: Connection open failed. unavailable database源错误: 行 301:
if not BdpDataAdapter1.Active then行 303:
BdpDataAdapter1.Active:=true;//此句出错行 304:
end;
源文件: G:\Program
Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas 行: 303
堆栈跟踪: [BdpException: Connection open failed.
unavailable database] Borland.Data.Provider.BdpDataAdapter.e() Borland.Data.Provider.BdpDataAdapter.set_Active(Boolean value)
WebForm1.TWebForm1.Button1_Click(Object sender, EventArgs e) in G:\Program
Files\Borland\BDS\3.0\Demos\Delphi.Net\DBWeb\WebFilter\WebForm1.pas:303 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
仔细查阅帮助文件,BdpDataAdapter1的Active属性需设为true,但这么设置后也不行啊。肯定是数据库连接有问题,但在设计状态下测试数据
库连接没有问题呀,于是把重新在按钮事件加入数据库连接所有属性,编译运行,点击,故障依旧。 再仔细查阅帮助文件,内有如下内容:To
To set up a connection
1.In Borland Data Provider: Connections Editor, select the appropriate item from the Connections list.
2.In Connection Settings, enter the Database path.
Note: If referring to a database on the local disk, prepend the path with
localhost:. If using Interbase, for example, you would enter the path to your Interbase database:
localhost:C:\Program Files\Borland\Interbase\Examples\Database\employee.gdb
(or whatever the actual path might be for your system).
3.Complete the UserName and Password fields for the database as needed.
4.Click Test to confirm the connection.
A dialog appears confirming the status of the connection.
5.Click OK to return to the Borland Data Provider: Connections Editor dialog.
6.Click OK to return to the Data Adapter Configuration dialog.
In the Command tab, the areas for Tables and Columns are updated with information from your connection.
于是把BdpConnection1的ConnectionString属性设为databas=localhost:g:\Program
Files\Borland\Interbase\Examples\Database\employee.gdb;assembly=Borland.Data.Interbase,Version=2.0.0.0,Culture=neutral,Public
KeyToken=91d62ebb5b0d1b1b;vendorclient=gds32.dll;provider=Interbase;username=sysdba;password=masterkey
BdpDataAdapter1的Active属性设为true
去掉所加按钮及其代码,再次编译运行,一切正常。