2013-10-23 139 views
1

我正在嘗試使用LInklabel打開我的訪問數據庫上的超鏈接。但是,這是第一次使用鏈接標籤。任何建議都會很棒!C#LinkLabel訪問數據庫超鏈接

con.Open(); 

     str = "Select * from loc where link ='" + facility+ "'"; 
     cmd = new OleDbCommand(str, con); 
     dr = cmd.ExecuteReader(); 


     if (dr.Read()) 
     { 
      linkLabel1.Text = dr.GetString(17); 
     } 
+0

任何錯誤或異常信息?你確定你的loc表有'18'列嗎?你在調試你的代碼時看到了什麼? –

+0

鏈接無法打開我訪問時沒有錯誤的超鏈接。對不起,該表有5列,訪問數據庫上的鏈接在第5列。 –

+0

這是我放在這裏的代碼的拼寫錯誤。代碼在VS上是正確的。我只需要找到一種方法來鏈接它們。 –

回答

1

下面的代碼對我的作品:

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (var con = new OleDbConnection()) 
    { 
     con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Public\Database1.accdb;"; 
     con.Open(); 
     using (var cmd = new OleDbCommand()) 
     { 
      cmd.Connection = con; 
      cmd.CommandText = "SELECT FirstName, website FROM Clients WHERE ID = 1"; 
      OleDbDataReader rdr = cmd.ExecuteReader(); 
      rdr.Read(); 
      String fName = rdr["FirstName"].ToString(); 
      String url = rdr["website"].ToString(); 
      if (url.Substring(0,1).Equals("#")) 
      { 
       // remove leading and trailing hash marks from URL 
       //  as retrieved from a Hyperlink field in Access 
       url = url.Substring(1, url.Length - 2); 
      } 
      linkLabel1.Text = String.Format("Link to {0}'s website", fName); 
      linkLabel1.Links.Add(0, linkLabel1.Text.Length, url); 
     } 
     con.Close(); 
    } 
} 

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    string target = e.Link.LinkData as string; 
    System.Diagnostics.Process.Start(target); 
} 
+0

戈登!這工作完美!謝謝!在我的訪問數據庫中,我必須將我的字段的數據類型從超鏈接更改爲文本,並且完美地工作。它甚至可以打開本地文件夾。謝謝! –