Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 选择大小写并错误连接多个表_Vb.net - Fatal编程技术网

Vb.net 选择大小写并错误连接多个表

Vb.net 选择大小写并错误连接多个表,vb.net,Vb.net,在没有上下文的情况下,它有点帮助,但我尝试了一下: 我会取代 strSQL=“从(basic.tconst-internal-JOIN-Rating.tconst-on-basic.tconst=Rating.tconst)”和fieldselect&“”&TextBox1.Text&“%”中选择开始、类型和平均值 与 “选择开始时间、类型、平均值”& “来自basic.tconst”& “基本上的内部联接Rating.tconst.tconst=Rating.tconst”&fieldsele

在没有上下文的情况下,它有点帮助,但我尝试了一下:

我会取代
strSQL=“从(basic.tconst-internal-JOIN-Rating.tconst-on-basic.tconst=Rating.tconst)”和fieldselect&“”&TextBox1.Text&“%”中选择开始、类型和平均值

“选择开始时间、类型、平均值”&
“来自basic.tconst”&
“基本上的内部联接Rating.tconst.tconst=Rating.tconst”&fieldselect&“'”&TextBox1.Text&“%””

为了获得更好的帮助,您能否解释一下表格评级和基本工作原理以及fieldselect是什么

将数据对象保持在本地,以便控制关闭和处理。即使出现错误,使用…结束使用块也可以为您执行此操作

Select案例中的所有字段都是相同的数据类型吗?如果没有,您将不得不调整代码。如果需要帮助,请告诉我数据类型,以便我可以修复代码

始终使用参数以避免sql注入。文本框可以容纳放置表格命令。参数被视为值,而不是可执行代码

如果以后需要在代码中更新,则需要在Select中提供主键

Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
'由于字段名与组合文本完全匹配,因此不需要Case语句
Dim字段选择为字符串=ComboBox1.Text
Dim dt作为新数据表
使用conn=New-OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=Movies.accdb;Persist-Security-Info=False;”)
Dim strSQL=“从basic.tconst internal JOIN Rating.tconst在basic.tconst=Rating.tconst中选择startYear、genres、averagating,其中“&fieldselect&=@FieldValue;”
使用cmd作为新的OleDbCommand(strSQL,conn)
cmd.Parameters.Add(“@FieldValue”,OleDbType.VarChar).Value=TextBox1.Text
康涅狄格州公开赛
dt.Load(命令执行器读取程序)
终端使用
终端使用
DataGridView1.DataSource=dt
端接头

我想使用组合框作为程序的过滤器,我需要从两个不同的表中筛选数据。评级有自己的表,基本是不同的表。上面提到的两个字段都没有任何关联。

打印出strSQL,它会告诉您查询有什么问题。如果您不确定,请直接在数据库上执行输出。请添加上下文并正确格式化代码,以便我们能够提供帮助。您的问题是什么?请阅读并采取措施,你可能想修复其余部分,这比加入有更多的错误。老实说,我不太了解他的情况,没有背景,但即使没有背景,SELECT语句的结构缺少重要的关键字和运算符。此答案在生成查询时使用字符串连接。这对SQL注入黑客是完全开放的。我知道你只是建议修改操作码,但在我看来,答案不应该助长危险的编码习惯。至少,你应该至少提到这个问题。@Thryn,还有更深入的例子,但这里有一个指向的链接。在该链接的后面是使用参数化语句的示例。所有字段都是相同的数据类型。由于需要,我不能使用主键,有没有不使用主键编码的方法?\n我指的是更新和删除命令。如果无法唯一标识要对数据库执行操作的记录,则无法完成该操作。如果您可以在Where子句中提供足够的信息来标识记录,那么它可以工作,但如果不能,它将按照该标准对每个记录执行操作。
Imports System.Data.OleDb
Public Class Form1
    Dim conn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim da As OleDbDataAdapter
    Dim strSQL As String


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnsearch.Click
    Dim fieldselect As String = ""

    Select Case ComboBox1.Text
        Case "startYear"
            fieldselect = "startYear"
        Case "genres"
            fieldselect = "genres"
        Case "Rating"
            fieldselect = "Rating"
    End Select


    conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Movies.accdb; Persist Security Info=False;")

    strSQL = "SELECT startYear, genres, averageRating FROM (basic.tconst Inner JOIN Rating.tconst on basic.tconst=Rating.tconst)" & fieldselect & "'" & TextBox1.Text & "%'"

    conn.Open()
    da = New OleDbDataAdapter(strSQL, conn)

    Dim ds As New DataSet("Movies")

    da.Fill(ds, "Movies")

    DataGridView1.DataSource = ds.Tables("Movies")
    conn.Close()

End Sub