Доступ к данным базы данных из кода с помощью ASP.NET C # - PullRequest
1 голос
/ 08 ноября 2011

Я разрабатываю веб-шаблон с ASP.NET с использованием C #.Моя строка подключения:

<connectionStrings>
<add name="NorthwindConnectionString" 
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SecurityTutorials.mdf;Integrated Security=True;User Instance=True" 
providerName="System.Data.SqlClient"/>
</connectionStrings>

и доступ к строке подключения следующий:

string connStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;

my SqlDataSource выглядит следующим образом:

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
 ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
 SelectCommand="SELECT [ProductID], [ProductName], [Discontinued] FROM [Alphabetical list of products]"
 InsertCommand = "INSERT INTO [Alphabetical list of products] (ProductID, ProductName, Discontinued)VALUES(@ProductID,@ProductName,@Discontinued)">
<InsertParameters>
<asp:Parameter Name="ProductID" Type="String" />
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="Discontinued" Type="String" />
</InsertParameters> 
</asp:SqlDataSource>

Я поместил ListView на странице для отображения данных.Теперь, как я могу получить доступ к данным в базе данных и как я могу получить данные и показать их на странице, используя код позади?

Как вы знаете, используя <%# Eval("ProductName") %> внутри страницы, все данные доступны.Например, у меня есть столбец ProductName, я хочу получить данные в этом столбце, выполнить некоторое переформатирование и передать их в код формы страницы, а также написать SqlDataSource в коде позади.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

В качестве альтернативы вы можете подключиться к событию ItemDataBound объекта ListView. См. Пример кода в библиотеке MSDN: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound.aspx

0 голосов
/ 08 ноября 2011

Могу поспорить, что вариантов больше, чем этот, но я бы так и сделал. Вырежьте SqlDataSource на странице, извлеките и свяжите данные из кода:

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString)
{
  var selectCommand = new SqlCommand("SELECT ...");<br>
  selectCommand.CommandType = CommandType.Text;
  selectCommand.Connection = connection;<br /><br />  var dataAdapter = new SqlDataAdapter()<br />  dataAdapter.SelectCommand = selectCommand<br /><br />  var dataSet = new DataSet();<br /><br />  connection.Open()<br />  dataAdapter.Fill(dataSet, "myDataSet");<br />  connection.Close()<br /><br />  // now, the dataSet.Tables[0] is a DataTable with your data in it. You can add, edit or remove data in this table before binding it to the ListView<br /><br />  myListView.DataSource = dataSet;<br />  myListView.DataBind();
}
В этом примере вам придется написать отдельный код для вставки данных. При работе с ASP.NET я специально пишу свой код следующим образом, поскольку приложения ASP.NET не имеют состояния и поэтому не запоминают состояние или данные (кроме того, что хранится в Session или ViewState)
...