VB.Net中Mysql/Gridview的搜索过滤

VB.Net中Mysql/Gridview的搜索过滤,mysql,asp.net,vb.net,datepicker,Mysql,Asp.net,Vb.net,Datepicker,我有两个文本框“TextBox1”和“TextBox2”,还有一个提交按钮“Button1” 下面我有一个标签“Label1” 我需要做的是在“Input1和Input2”(yyyy-mm-dd)中的日期之间进行搜索 并显示一个值(仅统计选项卡中的记录) 这是我目前的问题 Dim c As New MySqlConnection("Server=localhost;Database=test;UID=test;PWD=test;") c.Open() Dim com As New MySqlCo

我有两个文本框“TextBox1”和“TextBox2”,还有一个提交按钮“Button1” 下面我有一个标签“Label1”

我需要做的是在“Input1和Input2”(yyyy-mm-dd)中的日期之间进行搜索 并显示一个值(仅统计选项卡中的记录)

这是我目前的问题

Dim c As New MySqlConnection("Server=localhost;Database=test;UID=test;PWD=test;")
c.Open()
Dim com As New MySqlCommand("SELECT COUNT(*) as c FROM toutcome WHERE AffID = '0001' AND CompletedDate >= CURDATE();", c)
Dim myReader As MySqlDataReader = com.ExecuteReader(CommandBehavior.CloseConnection)
myReader.Read()
Label1.Text = myReader.Item(0).ToString()

myReader.Close()
这是我试图用来完成上述任务的查询,它根本不起作用

Dim c As New MySqlConnection("Server=localhost;Database=mdxmain;UID=MerryWoodTest;PWD=H0r$hamTest;")
c.Open()
Dim com As New MySqlCommand("SELECT COUNT(*) as c FROM toutcome WHERE AffID = '0001' AND WHERE CompletedDate >= '" & TextBox1.Text & "' AND CompletedDate <= '" & TextBox2.Text & "'", c)
Dim myReader As MySqlDataReader = com.ExecuteReader(CommandBehavior.CloseConnection)
myReader.Read()
Label11.Text = myReader.Item(0).ToString()

myReader.Close()
Dim c作为新的MySqlConnection(“Server=localhost;Database=mdxmain;UID=MerryWoodTest;PWD=H0r$hamTest;”)
c、 开()

将com设置为新的MySqlCommand(“选择COUNT(*)作为c,从toutcome开始,其中AffID='0001'和WHERE CompletedDate>='”&TextBox1.Text&“,”和CompletedDate该行中的位置太多

... FROM toutcome WHERE AffID = '0001' AND WHERE ....
                                           ^^^^^
当然,更好的方法是使用参数化查询,使命令文本更具可读性,防止Sql注入,并在一次性对象周围添加Using语句,以便在使用完它们后释放它们的资源

Dim commandText= "SELECT COUNT(*) as c FROM toutcome " & _
                 "WHERE AffID = '0001' AND CompletedDate >= @init " & _
                 " AND CompletedDate <= @ending"
Using c = New MySqlConnection(".........")
Using com = new MySqlCommand(commandText, c)
    c.Open()
    com.Parameters.Add("@init", MySqlDbType.Date).Value = Convert.ToDateTime(TextBox1.Text)
    com.Parameters.Add("@ending", MySqlDbType.Date).Value = Convert.ToDateTime(TextBox2.Text)
    Using myReader = com.ExecuteReader(CommandBehavior.CloseConnection)
       if myReader.Read() Then
           Label11.Text = myReader.Item(0).ToString()
       End If
    End Using
End Using
End Using
Dim commandText=“选择计数(*)作为toutcome中的c”&_
“其中,AffID='0001'和CompletedDate>=@init”&_

“和CompletedDate我还修复了我以前的错误查询,它正在工作

   Dim x1 As New MySqlConnection("Server=test;Database=mdxmain;UID=test;PWD=testt;")
            x1.Open()
            Dim comx1 As New MySqlCommand("SELECT COUNT(*) as c FROM toutcome WHERE AffID = '" & CType(Session.Item("affID"), String) & "' AND CompletedDate >= '" & TextBox1.Text & "' AND CompletedDate <= '" & TextBox22.Text & "' AND Status = 'A'", x1)
            Dim myReaderx1 As MySqlDataReader = comx1.ExecuteReader(CommandBehavior.CloseConnection)
            myReaderx1.Read()
            Label12.Text = myReaderx1.Item(0).ToString()

            myReaderx1.Close()
Dim x1作为新的MySqlConnection(“Server=test;Database=mdxmain;UID=test;PWD=testt;”)
x1.Open()

将comx1作为新的MySqlCommand(“选择COUNT(*)作为c,从toutcom中选择,其中AffID='”&CType(Session.Item(“AffID”)、String)和CompletedDate>='”&TextBox1.Text&“'和CompletedDate根本不起作用,请解释一下?您收到错误消息了吗?计数为零?我已经更新了问题Steve。我认为您在这里至少犯了几个错误。没有使用字符串连接。您读过吗