将值传递给vb.net中的资源文件

时间:2016-12-07 15:11:21

标签: .net vb.net visual-studio-2015 my.resources

我有一个用户表单,允许用户选择开始和结束日期(分别使用名为dtStartdtEnd的DateTimePicker对象)。然后将这些日期用作针对数据库的SQL查询中的条件。

当我最初编写程序时,我在我的应用程序中对SQL查询进行了硬编码,这非常有效。简化示例如下:

Private Sub RunSQL_Click(sender As Object, e As EventArgs) Handles RunSQL.Click

    Dim mySQLString As String

    'Create SQL Query String
    mySQLString = "Select * " & vbLf &
                  " From " & vbLf &
                  "  some.table " & vbLf &
                  " Where a.start_dttm > (' & dtStart.Text & ' - INTERVAL '1' DAY) and a.end_dttm <= ' & dtEnd.Text & '"

   'Run SQL against database
   ...

End Sub

但是,鉴于真正的SQL语句非常复杂,我希望调用My.Resources中包含SQL语句的文件,以便在我想制作时更容易更新更改提取物。因此,在上面的示例中,我将更改写出SQL语句到mySQLString = My.Resources.Extract。我的问题是如何通过My.Resources.Extract用户输入的开始日期和结束日期。

如果我的资源文件包含对dtStart.TextdtEnd.Text的引用,这些显然只是作为文本处理,因此运行SQL失败。

是否有任何方法可以将值传递到资源文件中,或告诉vb.net我的提取文件中的dtStart.Text不是文本,而是对DateTimePicker值的引用。

提前感谢您的建议。

1 个答案:

答案 0 :(得分:1)

因此,对于任何对“Pro Grammer”的评论感兴趣的人,我有2个解决方案:

1)查找并替换相关字符串:

/(?:^|,)\w{2}(?!3G|3K)/i

2)使用参数化SQL:

资源文件中的我的SQL已经改为看起来像这样

mySQLString = My.Resources.Extract.Replace("dtStart.Text", dtStart.Text).Replace("dtEnd.Text", dtEnd.Text)

然后在代码中设置Select * From some.table Where a.start_dttm > (@startdate - INTERVAL 1 DAY) and a.end_dttm <= @enddate @startdate参数,如下所示:

@enddate