从一个方法动态获取asp:SqlDataSource连接字符串(没有Webconfig)

时间:2016-10-22 10:06:13

标签: c# asp.net connection-string

尝试从asp:sqldatasource标记中的类设置sql server:

Public static SqlConnection getConnection()
{
      SqlConnection conn = new SqlConnection();
      //rest of the code that 100% works
      return conn;
}

此功能在C#代码中进行测试,100%正常工作。 现在我试图在asp:SqlDataSource:

中使用它
<asp:SqlDataSource runat="server" ID="sqlDBConnection"
ConnectionString="<%# inProcessInventory.DataTools.getConnection().ConnectionString %>"

我收到:

  

ConnectionString属性尚未初始化

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

顾名思义,ConnectionString是一个字符串。您将返回SqlConnection,其中包含字符串。

public static string getConnection()
{
    return "Data Source=localhost;Initial Catalog=yourDB;User ID=yourUser;Password=pa$$w0rd";
}

或者

public static SqlConnection getConnection()
{
    SqlConnection conn = new SqlConnection("Data Source=localhost;Initial Catalog=yourDB;User ID=yourUser;Password=pa$$w0rd");
    return conn;
}

<强>更新

如果在后面的代码中设置连接字符串,它可以正常工作:

protected void Page_Load(object sender, EventArgs e)
{
    sqlDBConnection.ConnectionString = inProcessInventory.DataTools.getConnection().ConnectionString;
}

答案 1 :(得分:1)

信用:https://forums.asp.net/t/1072016.aspx?Dynamic+connection+strings

  

如果您的连接字符串是在运行时动态创建的。我们   无法在设计时设置连接字符串。

绑定到属性可能不起作用,因为这取决于您何时在控件上调用DataBind。

在这种情况下,最好在Page_Load的事件处理程序后面的代码中设置它,如

Me.dsTest.ConnectionString = objClientConnection.ConnectionString

然后你可以手动调用DataBind()。

答案 2 :(得分:0)

您好请查看我对create dynamic connectionstring的意见。

我们经常使用SqlConnection并直接设置Connectionstring或从ConfigurationManager调用(在Asp.net中)。你知道SqlConnectionStringBuilder类吗?它位于命名空间System.Data.SqlClient。

您可以使用此类在SqlConnection类中设置Connectionstring值。这是代码: -

SqlConnection myConnection = new  SqlConnection();

SqlConnectionStringBuilder myBuilder = new  SqlConnectionStringBuilder();

myBuilder.UserID = "sa";

myBuilder.Password = "sa123";

myBuilder.InitialCatalog = "DbName";

myBuilder.DataSource = "ServerName";

myBuilder.ConnectTimeout = 30;

myConnection.ConnectionString = myBuilder.ConnectionString;

谢谢。