none
vb2010 如何实现acess简单查询 反馈查询结果到datagridview和textbox框里 RRS feed

  • 问题

  • 千万别给我来 select * from ddd where a=查询条件的此类回答啊,这个在vb2010 就是语法错误!!!!!
    麻烦大神给予明示,语言参考手册查了n个,vb210从入门到精通看了n版,就是找不到这句话该怎么写!

    郁闷透顶中,2010和vb6差异太大。我的数据库完整描述:数据库名shuju(mdb的数据) ,表名 ddd, 字段假设就三个 a b c ,在窗体画个文本框,输入个数值就出结果在数据表中,就是在Datagirdview和textbox显示查询结果。
    对了 ,外围环境的语法麻烦也写一下啊,高手大神们跪求完美解答啊!!!!
    2014年7月19日 5:09

答案

  • 首先如果你的序号是字符型,应该加单引号;同时绝对不建议拼接SQL字符串,因为这样会导致SQL注入式攻击。请这样改正:

    cmd = New SqlCommand("select * from kb.kes where 序号=@序号", cnn)

    cmd.Parameters.AddWithValue("@序号", TextBox1.Text)

    另外如果你要绑定到DataGridView,应该这样做:

    cmd = New SqlCommand("select * from kb.kes where 序号=" + TextBox1.Text, cnn) Try Dim dt As New DataTable Dim bs As New BindingSource() Dim adapter As New SqlDataAdapter(cmd) adapter.Fill(dt) '把数据填充到内存表中 bs.DataSource = dt '绑定到数据源向导 DataGridView1.DataSource = bs DataGridView1.AutoGenerateColumns = True TextBox1.DataBindings.Add("Text",bs,"数据表中列名")

    '直接把字段绑定到文本框中


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    • 已标记为答案 hyvbstud 2014年7月19日 13:12
    2014年7月19日 11:22
    版主

全部回复

  • 您好:

    你可以参考使用SqlCommand类完成该功能,示例代码如下:

    Using command As New SqlCommand("Select Top 1 某个字段名称 From xxx where a=@a",New SqlConnection("数据库字符串连接"))
        command.Connection.Open()
        TextBox1.Text = command.ExecuteScaler().ToString()
    End Using

    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2014年7月19日 5:54
    版主
  • 在datagird表里如何显示啊 ,我看还有一个思路是dataset的思路 这个让文本框或者datagridview重新绑查询后生产的数据源就行了,另外那个linq的方法怎么用,或者还有一个 from  ....select 的是不是也能实现 只要有这一个实例之后我就可以实现动态 模糊 统计等多种查询了,麻烦大神再给指导一下 谢谢啊!
    2014年7月19日 6:21
  • 1)绑定到DataGridView中,直接用SqlDataAdapter的Fill方法填充到一个DataTable,然后直接设置DataGridView的Datasource为DataTable即可。

    2)LINQ方法,直接:

    2.1)拖拽一个表到LINQ文件中,自动生成模型。

    2.2)使用DataContext(数据源上下文对象),写LINQ(具体可以参考:http://www.cnblogs.com/lovecherry/archive/2007/08/13/853754.html)。


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2014年7月19日 7:57
    版主
  • 好的 谢谢您啊 您说的这几个我实验下 我看那个linq非常简单 看了vb官方的几个实例这个用的比较多,就一句话的事。我多试试不懂再请教您啊!
    2014年7月19日 8:21
  • SqlCommand 这个需要定义个啥吗 直接用通不过啊?
    2014年7月19日 9:26
  • Imports System.Data.SqlClient
    Public Class Form1

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: 这行代码将数据加载到表“KbDataSet.kes”中。您可以根据需要移动或删除它。
            Me.KesTableAdapter.Fill(Me.KbDataSet.kes)

        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim cnn As SqlConnection
            cnn = New SqlConnection("Data Source=(localdb)\Projects;Initial Catalog=kb;Integrated Security=True;Encrypt=False;TrustServerCertificate=False")
            Dim cmd As SqlCommand
            cmd = New SqlCommand("select * from kb.kes where 序号=" + TextBox1.Text, cnn)
            Dim dr As SqlDataReader
            Try
                cnn.Open()
                dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
                Dim bs As New BindingSource()
                bs.DataSource = dr
                DataGridView1.DataSource = bs
                DataGridView1.AutoGenerateColumns = True
            Catch ex As Exception
                MsgBox(ex.Message)
            Finally
                cnn.Close()
                cnn.Dispose()
            End Try

        End Sub
    End Class

    这个代码有啥错误 一运行就死,意思就是根据文本框输入的内容查出对应的记录显示在表中,也不显示错误,一执行就死。

       
    2014年7月19日 9:33
  • 首先如果你的序号是字符型,应该加单引号;同时绝对不建议拼接SQL字符串,因为这样会导致SQL注入式攻击。请这样改正:

    cmd = New SqlCommand("select * from kb.kes where 序号=@序号", cnn)

    cmd.Parameters.AddWithValue("@序号", TextBox1.Text)

    另外如果你要绑定到DataGridView,应该这样做:

    cmd = New SqlCommand("select * from kb.kes where 序号=" + TextBox1.Text, cnn) Try Dim dt As New DataTable Dim bs As New BindingSource() Dim adapter As New SqlDataAdapter(cmd) adapter.Fill(dt) '把数据填充到内存表中 bs.DataSource = dt '绑定到数据源向导 DataGridView1.DataSource = bs DataGridView1.AutoGenerateColumns = True TextBox1.DataBindings.Add("Text",bs,"数据表中列名")

    '直接把字段绑定到文本框中


    ASP.NET Forum
    Other Discussion Forums
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    • 已标记为答案 hyvbstud 2014年7月19日 13:12
    2014年7月19日 11:22
    版主
  • 谢谢您费心回答我的问题 ,我比较笨,不知道能否告诉下您的qq或者啥能在线找到您的一个联系方式啊?
    2014年7月19日 13:28