2016-10-22 3 views
0

Попытка установить SQL сервер из класса в осины: SqlDataSource тег:Получение жерех: SqlDataSource строки соединения динамически из метода (без WebConfig)

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

Эта функция тестируется в C# код и он работает на 100% , Теперь я пытаюсь использовать его в осины: SqlDataSource:

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

я получаю:

Свойство ConnectionString не был инициализирован

Любое предложение?

ответ

1

Кредит: https://forums.asp.net/t/1072016.aspx?Dynamic+connection+strings

Если ваша строка соединения создается динамически во время выполнения. We не может установить строку соединения во время разработки.

Привязка к собственности может не работать, поскольку это зависит от того, когда вы вызываете DataBind на своих элементах управления.

В этом случае, это лучше, чтобы установить это в коде позади обработчика событий для Page_Load как

Me.dsTest.ConnectionString = objClientConnection.ConnectionString

Тогда вы можете позвонить DataBind() вручную.

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; 
} 

UPDATE

Это действительно работает правильно, если вы установите строку соединения в код:

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

Я возвращаюсь SqlConnection.ConnectionString –

+0

Нет, потому что его нет. По крайней мере, не в вашем фрагменте. Но я обновил свой ответ, чтобы включить возврат с помощью 'SqlConnection'. – VDWWD

+0

спасибо. функции извлекают части строки подключения из частей свойств. это работает, я могу заверить вас.Синтаксис asp: SqlConnection имеет проблему –

0

Hi Пожалуйста, проверьте мое мнение о создании динамической соединительной строки.

Мы часто используем SqlConnection и устанавливаем ConnectionString напрямую или вызываем из ConfigurationManager (в Asp.net). Вы знаете о классе SqlConnectionStringBuilder. Он находится под пространством имен System.Data.SqlClient.

Этот класс можно использовать для установки значений ConnectionString в классе SqlConnection. Вот код: -

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; 

Спасибо.

Смежные вопросы