也许是一个愚蠢的问题,但这里什么都没有:)
到目前为止,在设置连接字符串时,我一直在为asp:SqlDataSource
使用html标记,如下所示:
<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ActualConnStringNameFromWebConfig %>"
SelectCommand="select something from Table">
</asp:SqlDataSource>
请注意经典表单:ConnectionString="<%$ ConnectionStrings:ActualConnStringNameFromWebConfig %>"
但是如何设置(如果可能)相同asp:SqlDataSource
的连接字符串,如下所示:
ConnectionString="<%# ConnectionStrings:Eval("MyCodeBehindString") %>"
我的代码背后的地方我有这样的东西:
public partial class MyPage : System.Web.UI.Page
{
public const string MyCodeBehindString = "ActualConnStringNameFromWebConfig";
//rest of code
}
Web配置部分:
<connectionStrings>
<remove name="ActualConnStringNameFromWebConfig" />
<add name="ActualConnStringNameFromWebConfig" connectionString="Data Source=(localhost);Initial Catalog=MyDB;Persist Security Info=True; bla bla providerName="System.Data.SqlClient" />
</connectionStrings>
当我这样使用它时,我收到一条错误,指出Server标签格式不正确......
答案 0 :(得分:0)
您可以从web.config
读取类似的连接字符串。为了让你阅读它,你将不得不做类似
string MyCodeBehindString = ConfigurationManager.ConnectionStrings["ActualConnStringNameFromWebConfig"].ConnectionString;
确保添加以下参考using System.Configuration;
我建议您在后面的代码中处理所有Sql
内容。
using(var connection = new SqlConnection(MyCodeBehindString))
{
//Do Some work
}
要确保连接始终关闭,请打开using
块内的连接,如上面的代码片段所示。这样做可确保在代码退出块时自动关闭连接。
答案 1 :(得分:0)
在你的代码后面设置一个包含实际连接字符串的变量(注意受保护的访问修饰符,因此它可以在aspx中访问):
<强> aspx.cs:强>
protected string MyCodeBehindString = ConfigurationManager.ConnectionStrings["ActualConnStringNameFromWebConfig"].ConnectionString;
<强> ASPX:强>
<asp:SqlDataSource ID="dsMyDataSource" runat="server" ConnectionString="<%= MyCodeBehindString %>"
SelectCommand="select something from Table">
</asp:SqlDataSource>