怎么将查询到的数据显示在DataGridView中

如何将查询到的数据显示在DataGridView中

背景介绍:

数据库中的T_Line_Info表中存放着学生上机的记录,也就是我们需要查询上机记录的表,其中具体内容为:


怎么将查询到的数据显示在DataGridView中


界面设计如下:

怎么将查询到的数据显示在DataGridView中

右击DataGridView控件,选择编辑列,设计它的列名。

怎么将查询到的数据显示在DataGridView中

代码实现部分:

U层:

Public Class frmQueryOnRecord

    Private Sub btn_Query_Click(sender As Object, e As EventArgs) Handles btn_Query.Click
        Dim student As New Login.Model.LineInfo
        Dim BUser As New Login.BLL.LoginManager
        '将输入的卡号传给实体
        student.cardno = txtcardno.Text
        DataGridView1.Visible = True

        '在数据库中查到该卡号的上机信息
        Dim uTable = BUser.QueryOnRecord(student)
        If uTable.Rows.Count > 0 Then
            '将数据显示在DataGridView中

            DataGridView1.Item(1, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("studentname")
            DataGridView1.Item(2, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("ondate")
            DataGridView1.Item(3, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("ontime")
            DataGridView1.Item(4, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("offdate")
            DataGridView1.Item(5, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("ontime")
            DataGridView1.Item(6, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("moeny")
            DataGridView1.Item(7, DataGridView1.NewRowIndex).Value = uTable.Rows(0)("consumemoney")


        Else
            '没有查到内容时
            DataGridView1.Rows.Clear()
            MsgBox("没有找到记录!")
        End If
    End Sub

End Class



B层:

   Public Function QueryOnRecord(student As Login.Model.LineInfo) As DataTable
        Dim f As New DFactory.DBFactory
        Dim istudent As Login.Interface.ILineInfo

        istudent = f.QueryOnlineInfo
        '接收DataTable
        Table = istudent.Query_OnRecord(student)
        '把Table返回到U层
        Return Table


    End Function

接口:

Public Interface ILineInfo
    '返回的类型是DataTable
    Function Query_OnRecord(student As Login.Model.LineInfo) As DataTable
End Interface

实体:

Public Class LineInfo
    '与上机记录表中的字段一一对应
    Public cardno As String
    Public studentname As String
    Public ondate As String
    Public ontime As String
    Public offdate As String
    Public offtime As String
    Public money As String
    Public consumemoeny As String

End Class


sqlHelper中的GetDataTable方法

 Public Function GetDataTable(ByVal cmdTxt As String, ByVal cmdType As CommandType, ByVal paras As SqlParameter()) As DataTable
        Dim strConnStr As String = System.Configuration.ConfigurationManager.AppSettings("ConnStr")
        '定义一个数据库连接对象  
        Dim conn As SqlConnection = New SqlConnection(strConnStr)
        Dim cmd As New SqlCommand '定义一个命令对象  
        Dim adataset As DataSet
        Dim adaptor As SqlDataAdapter '定义一个适配器对象  
        cmd = New SqlCommand(cmdTxt, conn)
        adaptor = New SqlDataAdapter(cmd)
        adataset = New DataSet
        cmd.CommandType = cmdType
        cmd.Parameters.AddRange(paras)
        Try
            '打开数据库连接  
            If conn.State = ConnectionState.Closed Then
                conn.Open()

            End If
            '填充数据集  
            adaptor.Fill(adataset)
            Return adataset.Tables(0)
        Catch ex As Exception
            MsgBox(ex.Message, , "数据库操作")
        Finally
            '关闭数据库连接  
            If conn.State = ConnectionState.Open Then
                conn.Close()

            End If
        End Try


    End Function


D层:

Public Function QueryOnRecord(student As Login.Model.LineInfo) As DataTable Implements ILineInfo.Query_OnRecord
        '按卡号在上机记录表中查找
        Dim sql As String = "select * from T_Line_Info where cardno=" & student.cardno
        Dim cmd As SqlCommand = New SqlCommand(sql, conn)
        Dim helper As New Login.DAL.sqlHelper
        '设置参数
        Dim paras As SqlParameter() = {New SqlParameter("@cardno", student.cardno)}
        Try
            conn.Open()
            '调用sqlhelper中的GetDataTable方法
            Return helper.GetDataTable(sql, CommandType.Text, paras)
       
        Catch ex As Exception
            MsgBox(ex.Message, "")

        End Try
    End Function

运行结果:

怎么将查询到的数据显示在DataGridView中


3楼han_yankun2009昨天 21:23
没做判断和检测呀,这个一定要接的修改。这个是链表查询么,不是的话,你还可以试下,绑定数据控件,直接绑定,不再写后面的代码
Re: u010066934昨天 21:24
回复han_yankun2009n嗯嗯,还要完善
2楼u010929604昨天 19:07
面向对象的实现,又是一次历练
Re: u010066934昨天 21:23
回复u010929604n终于有些思路了
1楼u010850027昨天 17:35
先学习一下 `(*∩_∩*)′
Re: u010066934昨天 18:12
回复u010850027n好哒,欢迎