我的目标是手动或使用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命令中完成的,但我想改变它。
答案 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