数据库和asp.net

时间:2010-11-30 15:08:19

标签: asp.net sql vb.net

我的目标是手动或使用sqladapater连接到我的数据库,并从sql server 2005上的两个数据库获取信息。 然后我想获取这些信息并在运行时开始添加/减去/除/乘某些列并将信息放入其他列。我可以在查询中执行此操作,但是,我想在运行时执行此操作是实现此目的的最佳方法。 我有一些工作,但我只是想重新开始,看看你将如何做到这一点。

Partial Class _Default
    Inherits System.Web.UI.Page
    Public cmd As New SqlCommand()
    Public da As New SqlDataAdapter(cmd)
  conn string here.....
    Dim ds As New DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        cmd.Connection = conn
        conn.Open()

        ' Dim ds As New DataSet
        Dim x As New DataTable

        cmd.CommandText = "SELECT B603SalesAsOFMASTER.DIVISION, B603SalesAsOFMASTER.SDESCR, B603SalesAsOFMASTER.DYYYY, B603SalesAsOFMASTER.AsOFSales, B603SalesAsOFMASTER.ASOFPAX, B603SalesAsOFMASTER.YESales, B603SalesAsOFMASTER.YEPAX, B603SalesAsOFMASTER.PCTofSales, B603SalesAsOFMASTER.PCTofPAX, B601SalesAsOF.Sales AS [Current Sales], B601SalesAsOF.PAX AS [Current PAX], B601SalesAsOF.Sales / B601SalesAsOF.PAX AS [AVG PAX], B601SalesAsOF.Sales / B603SalesAsOFMASTER.PCTofSales AS [Projected Year End] FROM B603SalesAsOFMASTER INNER JOIN B601SalesAsOF ON B603SalesAsOFMASTER.SDESCR = B601SalesAsOF.SDESCR WHERE (B603SalesAsOFMASTER.DYYYY = '2008') AND (B601SalesAsOF.DYYYY = '2010')"
        'da.Fill(ds)
        da.Fill(x)


        GridView1.DataSource = x

        GridView1.DataBind()

        da.FillSchema(ds, SchemaType.Mapped)

        conn.Close()
    End Sub

End Class

这就是我现在正在玩的东西,我的一些计算是直接在sql命令中完成的,但我想改变它。

2 个答案:

答案 0 :(得分:2)

听起来就像你在询问如何将计算字段从SQL查询中移出并进入查询和数据网格绑定之间的代码。 (如果我的解释不正确,请告诉我。)如果是这种情况,this short tutorial应该具备您正在寻找的内容。

另一方面,您班上的公共数据访问成员让我感到不安。那些可能更好的私人。或者,更好的是,封装在使用它们的单个方法中。抛出一些try / catch / finally,以获得良好的测量和资源清理当然:)

答案 1 :(得分:1)

创建Data Access Layer (DAL) 2 - Sqlconnections,每个db一个 如果您只是在读取数据,请使用sqlreader,如果需要进行更改,请使用适配器。 使用sql字符串或存储过程来检索“未计算的”数据,但如果您打算允许用户界面进行任何过滤,请确保它们是参数化的。

*研究避免SQL Injection

创建Business Logic Layer 您可以在此处从DAL获取数据并进行计算。

表示层 看起来这将是一个带有网格查看器的网页,或者可能是基于您的需求的转发器控件。以下是一些让您前进的建议:http://msdn.microsoft.com/en-us/library/bb498211.aspx