Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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 如何使用firebird参数和条件进行查询_Vb.net_Firebird_Firebird .net Provider - Fatal编程技术网

Vb.net 如何使用firebird参数和条件进行查询

Vb.net 如何使用firebird参数和条件进行查询,vb.net,firebird,firebird-.net-provider,Vb.net,Firebird,Firebird .net Provider,我试图在单个按钮上构建一个函数,根据在多个组合框中所做的选择来搜索我的数据库。我有四个组合框,可以为null或值。我的最终结果应该是能够通过增强组合框过滤datagridview,从而获得动态和串联查询 Private Sub Button10_Click_1(sender As Object, e As EventArgs) Handles Button10.Click Dim conn As New FbConnection("User=SYSDBA;Password=mast

我试图在单个按钮上构建一个函数,根据在多个组合框中所做的选择来搜索我的数据库。我有四个组合框,可以为null或值。我的最终结果应该是能够通过增强组合框过滤datagridview,从而获得动态和串联查询

Private Sub Button10_Click_1(sender As Object, e As EventArgs) Handles Button10.Click
Dim conn As New 

FbConnection("User=SYSDBA;Password=masterkey;Database=..\DB.gdb;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;")
    Dim startdate As String = DateTimePicker1.Value.ToString("dd.MM.yyyy")
    Dim enddate As String = Microsoft.VisualBasic.DateAdd(DateInterval.Day, 1, DateTimePicker2.Value).ToString("dd.MM.yyyy")
    Dim adapter As New FbDataAdapter("SELECT * from ORDER WHERE DATEORDER BETWEEN @StartDate AND @EndDate AND ZIPCODE = CASE WHEN  @Param1 IS NULL THEN ZIPCODE ELSE @Param1 END ", conn)
    
    adapter.SelectCommand.Parameters.AddWithValue("@Param1", ComboBox5.Text)
    adapter.SelectCommand.Parameters.AddWithValue("@Param2", ComboBox3.Text)

    Dim table As New DataTable

    adapter.Fill(table)
    DataGridView1.DataSource = table
End Sub

通常,您可以使用以下可选参数编写查询:

Dim query=“选择*
从MyTable
其中(@Column1为NULL或Column1=@Column1)
和(@Column2为NULL或Column2=@Column2)”
Dim命令作为新的SqlCommand(查询、连接)
使用command.Parameters
.Add(“@Column1”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column2”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
以
如果在组合框中未选择任何项目,则相应的参数将设置为NULL,且相应的条件与所有记录匹配,从而有效地忽略该参数

上面的代码是为SQL Server编写的,我没有使用Firebird,因此我不确定具体的细节会发生什么变化,但这一原则适用于任何数据库。如果Firebird提供程序不支持命名参数(Access数据库就是这种情况),那么需要做的一个更改是,您需要为每列添加两个参数,而不是一个,例如

Dim query=“选择*
从MyTable
其中(@Column1A为空或Column1=@Column1B)
和(@Column2A为空或Column2=@Column2B)”
Dim命令作为新的SqlCommand(查询、连接)
使用command.Parameters
.Add(“@Column1A”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column1B”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column2A”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
.Add(“@Column2B”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
以

通常,您可以使用以下可选参数编写查询:

Dim query=“选择*
从MyTable
其中(@Column1为NULL或Column1=@Column1)
和(@Column2为NULL或Column2=@Column2)”
Dim命令作为新的SqlCommand(查询、连接)
使用command.Parameters
.Add(“@Column1”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column2”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
以
如果在组合框中未选择任何项目,则相应的参数将设置为NULL,且相应的条件与所有记录匹配,从而有效地忽略该参数

上面的代码是为SQL Server编写的,我没有使用Firebird,因此我不确定具体的细节会发生什么变化,但这一原则适用于任何数据库。如果Firebird提供程序不支持命名参数(Access数据库就是这种情况),那么需要做的一个更改是,您需要为每列添加两个参数,而不是一个,例如

Dim query=“选择*
从MyTable
其中(@Column1A为空或Column1=@Column1B)
和(@Column2A为空或Column2=@Column2B)”
Dim命令作为新的SqlCommand(查询、连接)
使用command.Parameters
.Add(“@Column1A”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column1B”,SqlDbType.VarChar,50).Value=If(ComboBox1.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox1.Text)
.Add(“@Column2A”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
.Add(“@Column2B”,SqlDbType.VarChar,50).Value=If(ComboBox2.SelectedItem为Nothing,CObj(DBNull.Value),ComboBox2.Text)
以