ASP数据库连接问题

时间:2012-05-04 10:51:52

标签: asp.net database database-connection connection-string webforms

我找到了很多方法可以在线连接到MS SQL数据库。我在web.config中使用连接字符串。它对我们想要的东西非常好,看起来像这样:

<connectionStrings>
    <add name="xxx" 
         connectionString="SERVER=xxx;UID=xxx;Trusted_Connection=Yes;DATABASE=xxx;"
      providerName="xxx" />
</connectionStrings>

这是连接的最佳方式吗?然后我使用asp web表单应用程序,主要使用gridview

  <asp:SqlDataSource ID="MatchDataSource" Runat="server"

            SelectCommand="SELECT * FROM [xxx].[Matcxxxh]"
            UpdateCommand="UPDATE [xxx].[Matxxxch] SET [xxx] = 
              @xxx, [xxx] = @xxx, [xxx] = 
              @xxx WHERE x=@xxxAnd x=@xxx"
            ConnectionString="<%$ ConnectionStrings:xxx %>">
            <UpdateParameters>
                <asp:Parameter Type="String" Name="CSISN"/>
                <asp:Parameter Type="String"  Name="ProcName"/>

            </UpdateParameters>
        </asp:SqlDataSource>

        <asp:GridView ID="GridView1" Runat="server" 
            DataSourceID="MatchDataSource" Width="100%">
            <RowStyle BackColor="white" ForeColor="black" Font-Italic="false" BorderColor="Black" />


            <Columns>

                <asp:TemplateField SortExpression="xxx" HeaderText="xxx">
                    <EditItemTemplate>
                        <asp:TextBox ID="editxxx" Runat="server" Text='<%# Bind("xxx") %>' 
                            MaxLength="15" ToolTip="Enter CSI SN"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" Runat="server" ErrorMessage="You must provide a xxx." ControlToValidate="editxxx">*</asp:RequiredFieldValidator>
                    </EditItemTemplate>
                    <ItemTemplate><asp:Label Runat="server" Text='<%# Bind("CSISN") %>' ID="Label1"></asp:Label></ItemTemplate>
                </asp:TemplateField>

我的问题是

  1. 我是否正确地解决了这个问题?
  2. 有人能指出一个能够展示最佳实践的正确教程吗?
  3. 如何在脚本完成运行时关闭最后的连接?

2 个答案:

答案 0 :(得分:2)

  1. 这是从配置中使用连接字符串的许多方法的一个。没有什么问题。看起来很好。

  2. 不,因为这是一个主观的事情而不是我们在这里回答的事情。

  3. 脚本完成后,连接将关闭。您无需执行任何操作(SqlDataSource负责所有细节。)

答案 1 :(得分:0)

我反对使用SqlDataSource。

是的,它在该页面上运行良好。但是,如果需要在另一个页面上使用该调用,您最终会复制并粘贴一些内容以使其在那里工作。

我建议创建某种类来调用数据库并将其作为List或IEnumerable返回。然后使用该类,您可以在后面的代码中分配数据源。

以下是使用实体框架查询数据的小例子。


数据访问类

public static class DataAccess
{
    public static List<Section> GetDataFromDatabase()
    {
        List<Section> recordList;
        using (CustomEntities context = new CustomEntities())
        {

            IQueryable<Section> query = from records in context.Records
                                                 select sections;
            recordList= query.ToList<Record>();
        }
        return recordList;
    }
}

代码隐藏用法

    private void BindLists()
    {
        // Get the data
        List<Section> theData = DataAccess.GetDataFromDatabase();

        // Assign the data source
        gridView.DataSource = theData;

        // Bind the grid view
        gridView.DataBind();
    }

这种方式可以在您的应用程序中提供更多的重用,并使更改变得更加容易。