Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Sql 将数据库和项目结果搜索到datagridview_Sql_Sql Server_Vb.net_Tsql_Vb.net 2010 - Fatal编程技术网

Sql 将数据库和项目结果搜索到datagridview

Sql 将数据库和项目结果搜索到datagridview,sql,sql-server,vb.net,tsql,vb.net-2010,Sql,Sql Server,Vb.net,Tsql,Vb.net 2010,我有一个包含大约100个不同变量的sql数据库。我基本上想要的是能够基于一些变量逐个搜索数据库,或者作为多个搜索。 为此,我在VS2010中创建了一个搜索表单,其中包含所需数量的组合框(每个组合框表示一个变量,并从数据库中获取不同的值)。 根据用户选择的变量,我希望结果显示在datagridview表上 由于某种原因,代码是错误的,我无法理解。问题位于da.Fill(datatable1)中,出现了意外错误。 是否有替代方案,并提供一些指导方针来完成该想法 专用子显示\u datagrid()

我有一个包含大约100个不同变量的sql数据库。我基本上想要的是能够基于一些变量逐个搜索数据库,或者作为多个搜索。 为此,我在VS2010中创建了一个搜索表单,其中包含所需数量的组合框(每个组合框表示一个变量,并从数据库中获取不同的值)。 根据用户选择的变量,我希望结果显示在datagridview表上

由于某种原因,代码是错误的,我无法理解。问题位于da.Fill(datatable1)中,出现了意外错误。 是否有替代方案,并提供一些指导方针来完成该想法

专用子显示\u datagrid()
con2.ConnectionString=“Server=DESKTOP-KQG48T5\SQL2021;Database=Fotilas2021;integratedsecurity=True;”
con2.Open()
Dim cmd2作为新的SqlCommand("选择姓名、身份号码、父亲姓名、当地日历日期、出生日期、子女人数、兵役、当前国家/地区、当前城市、手机号码、日期添加、职业、占位符、选举权重、选举联系人、选举类别、选举学院、删除组、选举外围、性别、父亲姓名、母亲姓名、生日、家庭状态、出生日期、地址、当前姓名、固定电话、占位符专业、,选举重要性、选举机制、选举外围、选举号码、教育语言、建议姓氏、建议电话、选举号码、教育大学、姓氏、父亲姓名、妻子姓名、姓名日、出生国、出生城市、健康状况、邮政编码、当前号码、家庭热线、传真、占用状态、占用公司、选举类型、选举类别、选举号码、教育级别、教育部、教育部,其中名称类似“%”+ComboBox2.Text+“%”,标识符数字类似“%”+ComboBox3.Text+“%”,父用户名类似“%”+ComboBox4.Text+“%”,LocalCelebDay类似“%”+ComboBox5.Text+“%”,胎记类似“%”+Combox6.Text+“%”,numfchilds类似“%”+Combox7.Text+“%”,军事服务类似“%”“+ComboBox8.Text+”%%CurrentCountry类“%”+ComboBox9.Text+“%”,CurrentCity类“%”+ComboBox10.Text+“%”,CellNumber类“%”+Combox11.Text+“%”,DateAdd类“%”+Combox13.Text+“%”,职业类“%”+Combox14.Text+“%”,发生类“%”+Combox15.Text+“%”,ElectWeight类“%”+Combox16.Text+”“%”,类似于“%”+ComboBox17.Text+“%”的选举联系人,类似于“%”+Combox19.Text+“%”的选举类别,类似于“%”+Combox20.Text+“%”的选举学院,类似于“%”+Combox21.Text+“%”的删除组,类似于“%”+Combox22.Text+“%”,类似于“%”+Combox30.Text+“%”的选举类别,类似于“%”+Combox31.Text+“%”的父名,类似于“%”的母名“+ComboBox32.Text+“%”,生日类“%”+Combox33.Text+“%”,家庭状态类“%”+Combox34.Text+“%”,生日类“%”+Combox35.Text+“%”,地址类“%”+Combox37.Text+“%”,当前名称类“%”+Combox38.Text+“%”,固定线路类“%”+Combox39.Text+“%”,占用特殊性类“%”+Combox43.Text++”“%”,类似“%”+ComboBox45.Text+“%”的选举重要性,类似“%”+Combox50.Text+“%”的选举机制,类似“%”+Combox51.Text+“%”的选举外围,类似“%”+Combox52.Text+“%”的选举重要性,类似“%”+Combox53.Text+“%”的选举编号,类似“%”+Combox56.Text+“%”的教育语言,类似“%”+Combox57.Text+”的建议姓氏”%“,”类似于“%”+ComboBox29.Text+“%”的建议电话,类似于“%”+Combox23.Text+“%”的选民,类似于“%”+Combox27.Text+“%”的教育大学,类似于“%”+Combox59.Text+“%”的姓氏,类似于“%”+Combox60.Text+“%”的父亲姓氏,类似于“%”+Combox61.Text+“%”的WifeName,类似于“%”+Combox62.Text+“%”的NameDay,类似于出生国“+ComboBox63.Text+”%',出生地像“%”+Combox64.Text+“%',健康状态像“%”+Combox65.Text+“%',邮政编码像“%”+Combox66.Text+“%',CurrentDimos像“%”+Combox67.Text+“%”,HomeLine像“%”+Combox68.Text+“%',传真像“%”+Combox69.Text+“%',发生状态像“%”+Combox71.Text+”“%”,类似于“%”+ComboBox72.Text+“%”的OccupFirm,类似于“%”+Combox74.Text+“%”的ElectType,类似于“%”+Combox76.Text+“%”的ElectCategory,类似于“%”+Combox81.Text+“%”的ElectDiamerisma,类似于“%”+Combox84.Text+“%”的EduLevel,类似于“%”+Combox85.Text+“%”,类似于“%”的EduPC,类似于“%”+Combox25.Text+”的ElecterOdimotis”%,例如“%”+ComboBox28.Text+“%”,con1)
Dim da作为新的SqlDataAdapter
Dim datatable1作为新的DataTable
da.SelectCommand=命令
datatable1.Clear()
da.填充(数据表1)
DtGrid_Search.DataSource=datatable1
con2.Close()
端接头

您应该首先使用参数,并且您应该构造SQL,以便每个参数都是有效的可选参数,例如

Dim sql=
挑选*
从某处
其中(@Column1为NULL或Column1=@Column1)
和(@Column2为NULL或Column2=@Column2)
和(@Column3为NULL或Column3=@Column3)
这里有许多事情需要注意

首先,这段代码使用XML文本。在(我认为)2015年引入多行
String
literals之前,这是编写长内联SQL的最佳方式,因为它允许您将其拆分为多行,而不会造成混乱,难以阅读

其次,SQL代码使用参数。如果您认为SQL代码就像一个VB方法,那么每个以
@
为前缀的东西基本上都是一个方法参数。当您执行SQL代码时,您为每个参数提供了一个值,就像调用VB方法一样。参数使代码更易于阅读,而不是受制于ct可以解决格式化问题,最重要的是,不会受到SQL注入攻击。如果需要,您可以进行一些研究以了解更多信息

最后,通过允许您将参数设置为
NULL
以使其有效地被忽略,每个参数的使用方式使它们成为有效的可选参数