筆者在用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 FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.pas 行: 290 堆棧跟蹤: [BdpException:
Connection open failed. unavailable database] Borland.Data.Provider.BdpDataAdapter.e()
Borland.Data.Provider.BdpDataAdapter.EndInit() WebForm1.TWebForm1.InitializeComponent() in G:Program
FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.pas:290 WebForm1.TWebForm1.OnInit(EventArgs e) in
G:Program FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.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 FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.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
FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.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
FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.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
FilesBorlandBDS3.0DemosDelphi.NetDBWebWebFilterWebForm1.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 FilesBorlandInterbaseExamplesDatabaseemployee.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
FilesBorlandInterbaseExamplesDatabaseemployee.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
去掉所加按鈕及其代碼,再次編譯運行,一切正常。