使用文本框从具有特定范围的SQL Server数据库中进行选择

0 vb.net sql-server-2012

Try
    conn = New SqlConnection(strcon)
    conn.Open()
    Dim str As String = "select * from MYTABLE where Year >='#" & Txtfromyear_reprt.Text & "#' and Year <='#" & Txttoyear_reprt.Text & "#'"
    da = New SqlDataAdapter(str, conn)
    Dim ds As New DataSet
    da.Fill(ds, "MYTABLE")
    DgvReport.DataSource = ds.Tables("MYTABLE")
    da.Dispose()
    conn.Close()

Catch ex As Exception
    MessageBox.Show(ex.Message)
End Try
Run Code Online (Sandbox Code Playgroud)

我正在处理我的学校项目,但我遇到了一个无法解决的问题.我在搜索按钮中编写了此代码,但是当我在运行时单击它时,我的数据网格中没有显示任何数据.

我想要的是当我点击它时我想使用两个文本框将所有数据从mytable显示到Datagrid视图.我有两个文本框,txtfromyear以及一个数据类型txttoyear的数据库列.Yearnvarchar(50)

请帮帮我,谢谢你.

Tim*_*ter 6

不要使用字符串连接来构建您的SQL查询,绝对不要!

你是开放的SQL注入,没有任何借口.而是使用sql参数:

Dim dateFrom as Date
Dim dateTo as Date
Dim validFromDate = Date.TryParse(Txtfromyear_reprt.Text.Trim(), dateFrom)
Dim validToDate = Date.TryParse(Txttoyear_reprt.Text.Trim(), dateTo)
Run Code Online (Sandbox Code Playgroud)

现在,如果用户未提供有效日期,则使用有意义的消息退出此方法.您可以检查validFromDatevalidToDate哪些是布尔值.其余代码执行If validFromDate AndAlso validToDate:

Dim str As String = "select * from MYTABLE where Year >= @fromyear and Year <= @toyear"
da = New SqlDataAdapter(str, conn)
da.SelectCommand.Parameters.Add("@fromyear", SqlDbType.DateTime).Value = dateFrom 
da.SelectCommand.Parameters.Add("@toyear", SqlDbType.DateTime).Value = dateTo
' now you can use da.Fill(ds, "MYTABLE") safely
Run Code Online (Sandbox Code Playgroud)

我刚刚看到你varchar用来存放datetimes.为什么?将其修复在数据库中.