簡體   English   中英

vb.net列表框和sql

[英]vb.net Listboxes and sql

我有4個列表框,我檢查,其中的內容去彌補放入sql語句的變量。這很好。問題是我必須檢查所有的框。如果我留下任何框out sql語句不起作用。 我嘗試添加“”到列表框但這不起作用,它看起來很亂。有一種解決方法。很多感謝吉姆這里是我的代碼:

Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc
Imports System.Data.DataTable
Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As      System.EventArgs) Handles MyBase.Load

    End Sub

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As  System.EventArgs) Handles Button1.Click
    Dim con As New OleDb.OleDbConnection
    Dim dbProvider As String
    Dim dbSource As String
    Dim ds As New DataSet
    Dim tables As DataTableCollection = ds.Tables
    Dim source1 As New BindingSource()
    Dim da As New OleDb.OleDbDataAdapter
    Dim sql As String

    Dim aa As String = authorList.Text
    Dim bb As String = publisherList.Text
    Dim cc As String = yearpublishedList.Text
    Dim dd As String = genreList.Text

    dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
    dbSource = "Data Source =C:\Documents and Settings\james\Desktop\Authors.accdb"
    con.ConnectionString = dbProvider & dbSource
    con.Open()
    sql = "SELECT * FROM books WHERE author = '" & aa & "' AND publisher = '" & bb &  "' AND yearpublished = '" & cc & "' AND genre = '" & dd & "' "


    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "Authors")

    Dim view1 As New DataView(tables(0))
    source1.DataSource = view1
    DataGridView1.DataSource = view1
    DataGridView1.Refresh()

    'MsgBox("OPEN FOR LUNCH")
    'MsgBox("CLOSED FOR THE DAY")
    con.Close()
 End Sub
End Class

您正在將復選框解析為字符串,因此當您這樣做時,您會得到:

1,2,3,4,5,6,7

如果您沒有選中一個復選框,它將如下所示:

1,2,3,,5,6,7

所以SQL會破解

有幾種方法可以解決這個問題,所以我不打算嘗試一下。 但是,這應該有希望向你解釋發生了什么以及它為什么會發生,所以你可以繼續修復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM