我正在ASP.NET和VS2008中设计一个Web服务,并使用类型化数据集来检索表数据。这些工作正常,并通过相关的TableAdapter对象建立自己的连接。编辑:我正在使用VB,BTW!
我现在正在尝试使用DataAdapter和Command对象运行自定义SQL字符串,但是我需要引用Connection对象才能使Command工作。处理这个问题的最佳方法是什么?我应该:
a)使用Global.asax创建一个全局连接对象,从web.config中检索连接字符串? (我已经尝试过那个,但没有太大的成功)
b)使用InitialiseComponent方法创建类级连接对象,还从web.config中检索ConnectionString?
c)从我已经在我输入的DataSet中创建的TableAdapter之一中检索一个连接?
d)我还没有想到的其他东西?
BTW我发现从web.config中提取ConnectionString非常困难,所以对此的任何帮助也会受到赞赏!
我对ASP.NET并不完全缺乏经验,但是我的上一个大项目使用的是VS2003,我想确保我正确使用当前的工具。
答案 0 :(得分: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
}
}
答案 1 :(得分: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 ;
}