2009-09-11 63 views
2

我正在设计ASP.NET和VS2008中的Web服务,并使用类型化数据集来检索表数据。这些工作良好,并通过其关联的TableAdapter对象建立自己的连接。编辑:我使用VB,顺便说一句!建立与ADO.NET命令对象一起使用的连接的最佳方法

我现在试图使用DataAdapter和Command对象来运行自定义SQL字符串,但是我需要引用Connection对象才能使Command正常工作。处理这个问题的最好方法是什么?我应该:

a)使用Global.asax创建全局连接对象,从web.config中检索连接字符串? (我已经尝试过那个,没有太多的成功)

b)使用InitialiseComponent方法创建一个类级别的连接对象,同时从web.config中检索ConnectionString?

c)从我已经在我的类型化数据集中创建的TableAdapter之一检索一个连接?

d)还有什么我还没有想到的?

顺便说一句我一直觉得很难从web.config中提取一个ConnectionString,所以任何帮助也将不胜感激!

我并不完全没有ASP.NET的经验,但我最后一个大项目使用VS2003,我想确保我正确使用当前工具。

回答

3

要提取连接字符串,使用

WebConfigurationManager.ConnectionStrings["name"].ConnectionString 

这是最好的打开和关闭连接尽可能接近它们的用途。 ADO.NET会做连接池,使这不会是昂贵的:

var connectionString = 
    WebConfigurationManager.ConnectionStrings["name"].ConnectionString; 
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cmd = new SqlCommand("query", conn)) 
    { 
     conn.Open(); 

     // Use the command 
    } 
} 
+0

OK,感谢您的建议是位 - 我在想,一个全球性的连接是否更有效与否。我忘了提及我使用VB,但我想我可以翻译! – Billious 2009-09-11 07:36:22

1

对于连接和数据访问的问题,我会建议你使用某种数据佣工去像Microsoft Data Access Application Block

Here可以找到关于如何使用它的小教程。

为了得到从web.config中使用的ConnectionString如下因素方法

public static string GetConnectionString(string strConstringKey) 
     { 
      return ConfigurationManager.ConnectionStrings[strConstringKey]; 
     } 

     public static bool GetConnectionString(string strConstringKey, ref string strConstring) 
     { 
      return (strConstring = ConfigurationManager.ConnectionStrings[strConstringKey]) == null ? false : true ; 
     } 
+0

谢谢 - 您检索连接字符串的语法变成了可以工作的语法。投票表决,因为我不能接受两个答案! – Billious 2009-09-11 08:37:26

+0

此外,我正在检查您提供的链接 - 忘记提及。 – Billious 2009-09-11 08:39:24

+0

欢迎大家...高兴地帮忙:) – Mahin 2009-09-11 08:48:41