程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> delphi2005探討之四

delphi2005探討之四

編輯:Delphi
 

  筆者在用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

  去掉所加按鈕及其代碼,再次編譯運行,一切正常。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved