【问题标题】:Visual Studio 2015. execute VB code from stringVisual Studio 2015. 从字符串执行 VB 代码
【发布时间】:2018-04-19 16:06:50
【问题描述】:

假设我有这个代码 sn-p

Dim tab As String = "myTab"
Dim val As String = "field1"
Dim con As String = "...."
Dim qry As String 'should be: "Select * from " & tab & " where value = '" & val & "'"
Dim com As New OracleCommand (qry, con)...

还假设从数据库中检索查询字符串(即 qry 的值)。 我不能将 qry 传递给 oracle 命令,因为它不会被评估,即变量没有绑定到它们的值,并且字符串按字面意思传递给命令,从而导致错误。 有没有办法评估字符串并将其作为 VB 语句执行?

【问题讨论】:

  • 用参数试试,你的解决方法就是这么简单!
  • 松饼。查询字符串只是一个例子。我应该存储各种代码字符串,以便在运行时检索和评估。例如,我希望存储查询的 where 子句,然后提取、评估并将其传递给报告。所以,我正在寻找有点像 javascript 的“Eval”语句
  • 你想存储一个带参数的sql查询把参数在运行时传递?
  • chillzy,不一定是查询字符串。我希望存储一个通用字符串,以便在运行时执行它。例如,如果我声明了一个变量 val = "field1",并在运行时提供字符串 value = '" & val & "'" 我希望得到类似这个 value = 'field1'

标签: vb.net visual-studio-2015 string-evaluation


【解决方案1】:

使用参数就像@muffi 所说的那样简单。

在我的头顶:

    Dim tab As String = "myTab"
    Dim val As String = "field1"

    Using cmd As New OracleCommand("SELECT * FROM :table WHERE value = :value", con)
        cmd.Parameters.Add(New OracleParameter() {Direction = ParameterDirection.Input, ParameterName = "table", OracleDbType = OracleDbType.Varchar2, Value = tab})
        cmd.Parameters.Add(New OracleParameter() {Direction = ParameterDirection.Input, ParameterName = "value", OracleDbType = OracleDbType.Varchar2, Value = val})
        Using OracleDataReader reader As cmd.ExecuteReader()
            While reader.Read()
                Console.WriteLine(reader.GetString(0))
            End While
        End Using
    End Using

【讨论】:

  • 感谢您的回答。正如我对 muffi 所说,我需要比查询字符串更通用的内容。例如,我应该只将查询的 where 子句保存到 db 中:“WHERE value = '”& val &“'”。在运行时,我希望检索此字符串,对其进行评估(在“ WHERE val = 'field1'”中进行转换),并将其作为参数传递给水晶报表。我可以得到它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 2011-07-27
  • 2015-11-08
  • 2017-02-07
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多