使用ASP.NET C#从后面的代码访问数据库数据

时间:2011-11-08 07:05:20

标签: c# asp.net asp.net-ajax sqldatasource

我正在使用C#开发一个带有ASP.NET的Web模板。我的连接字符串是:

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

我的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 :(得分:0)

我敢打赌,除此之外还有更多选择,但这就是我要做到的。剪切页面中的SqlDataSource并从代码中获取并绑定数据:

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString)
{
  var selectCommand = new SqlCommand("SELECT ...");
selectCommand.CommandType = CommandType.Text; selectCommand.Connection = connection;

  var dataAdapter = new SqlDataAdapter()
  dataAdapter.SelectCommand = selectCommand

  var dataSet = new DataSet();

  connection.Open()
  dataAdapter.Fill(dataSet, "myDataSet");
  connection.Close()

  // 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

  myListView.DataSource = dataSet;
  myListView.DataBind(); }
在此示例中,您必须编写单独的代码以插入数据。如果处理ASP.NET,我会故意编写这样的代码,因为ASP.NET应用程序是无状态的,因此不记得任何状态或数据(除了存储在Session或ViewState中的内容)

答案 1 :(得分:0)

作为替代方法,您可以挂钩ListView的ItemDataBound事件。请参阅MSDN Library中的示例代码:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemdatabound.aspx