[英]VB.NET MYSQL Datagridview is empty?
当我单击搜索按钮时,下面的代码将运行。 代码上没有错误,但datagridview仅显示列名。.查询是否有错误?
mySqlConn = New MySqlConnection
myCommand = New MySqlCommand
dt = New DataTable()
Try
If dt IsNot Nothing Then
dt.Dispose()
End If
If da IsNot Nothing Then
da.Dispose()
End If
If DataGridView1.DataSource IsNot Nothing Then
DataGridView1.DataSource = Nothing
End If
mySqlConn.ConnectionString = connStr
myCommand.CommandText = "Select * from createproject Where (FloatNumber = @floatNo OR @floatNo is Null) AND (DeveloperName = @devName OR @devName is Null) AND (DevelopmentType = @devType OR @devType is Null) AND (LotPt = @lotPt OR @lotPt is Null) AND (Mukim = @mukim OR @mukim is Null) AND (Daerah = @daerah OR @daerah is Null) AND (Negeri = @negeri OR @negeri is Null) AND (TempReference = @tempRef OR @tempRef is Null)"
myCommand.Connection = mySqlConn
mySqlConn.Open()
myCommand.Parameters.AddWithValue("@floatNo", TextBox3.Text.Trim())
myCommand.Parameters.AddWithValue("@devName", ComboBox6.Text.Trim())
myCommand.Parameters.AddWithValue("@devType", ComboBox7.Text.Trim())
myCommand.Parameters.AddWithValue("@lotPt", TextBox4.Text.Trim())
myCommand.Parameters.AddWithValue("@mukim", ComboBox8.Text.Trim())
myCommand.Parameters.AddWithValue("@daerah", ComboBox9.Text.Trim())
myCommand.Parameters.AddWithValue("@negeri", ComboBox10.Text.Trim())
myCommand.Parameters.AddWithValue("@tempRef", TextBox6.Text.Trim())
da = New MySqlDataAdapter(myCommand.ToString(), mySqlConn)
da.SelectCommand = myCommand
da.Fill(dt)
DataGridView1.DataSource = dt
da.Update(dt)
Catch ex As MySqlException
MsgBox(ex.ToString())
Finally
mySqlConn.Close()
mySqlConn.Dispose()
End Try
如果您打算在用户将字段保留为空的情况下忽略标准,那么在这种情况下,您实际上必须将NULL值传递给查询。 就像VB中的String.Empty
和Nothing
不一样,SQL中的空字符串和NULL也不一样。 您将必须执行以下操作:
Dim sql = <sql>
SELECT *
FROM MyTable
WHERE (@Column1 IS NULL OR Column1 = @Column1)
AND (@Column2 IS NULL OR Column2 = @Column2)
</sql>
myCommand.CommandText = sql.Value
Dim column1 = TextBox1.Text.Trim()
Dim column2 = TextBox2.Text.Trim()
With myCommand.Parameters
.Add("@Column1", SqlDbType.VarChar).Value = If(column1 = String.Empty, CObj(DBNull.Value), column1)
.Add("@Column2", SqlDbType.VarChar).Value = If(column2 = String.Empty, CObj(DBNull.Value), column2)
End With
请注意,使用Add
而不是AddWithValue
来Add
参数,因为无法从DBNull.Value
推断数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.