2013-10-23 98 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

戈登!这工作完美!谢谢!在我的访问数据库中,我必须将我的字段的数据类型从超链接更改为文本,并且完美地工作。它甚至可以打开本地文件夹。谢谢! –