读取包含需要VB.NET程序变量的SQL语句的XML文件

时间:2014-09-22 22:09:38

标签: sql xml vb.net variables

我有一个用VB.NET编写的程序,我把它写成了所有我的SQL语句硬编码到程序中。我想尝试将所有查询外部存储在XML文件中,以便可以对SQL进行更改(如果需要),而无需进入代码并每次都重建程序。

使事情变得复杂的部分是SQL语句需要添加变量才能使其正常运行。

例如:

  

SELECT name_first,name_last,email_id FROM& eventName的

eventName是程序中的变量。

当我设置XML文件时,我尝试了以下两种方法:

    <Data>
        <LoadSaves>
              <SQLStatement><![CDATA[SELECT name_first, name_last, email_id FROM &eventName&]]></SQLStatement>
        </LoadSaves>
    </Data>

    <Data>
        <LoadSaves>
              <SQLStatement><![CDATA["SELECT name_first, name_last, email_id FROM" & eventName]]></SQLStatement>
        </LoadSaves>
    </Data>

我需要CDATA,因为如果没有它,特殊字符有时会使它表现得很奇怪。

我的问题是程序没有替换变量,因为在这两种方法中,程序将整个事物拉成字符串。

使用第一种方法,我能够在其中添加一些代码来搜索&eventName&并将其替换为我需要的变量。这种方法工作得很好,但后来无法在外部使用SQL进行简单修改,因为如果我突然需要attendeeName而不是eventName,那么我可以在XML文件中更改它,但是我仍然需要更改代码以代替&attendeeName&并相应地替换。

有什么方法可以用更动态的方式处理这个问题而不是硬编码。就像我说的那样,我希望能够将我的SQL放在一个单独的文件中,以便在需要时轻松修改而无需触及代码,但请记住,我的每个SQL语句都需要先将变量添加到它们中运行

1 个答案:

答案 0 :(得分:2)

1:这是一个坏主意 - 有人可能搞乱你的程序,甚至找不到简单的方法来破解它。

2:你是串联的字符串,你不能在运行时做,只有设计时。

3:不要使用连接构建SQL语句,它可能很容易被黑客攻击或破坏。你应该像这样参数化你的SQL:

SELECT name_first, name_last, email_id FROM @EventName

然后当您运行命令时,使用AddWithParamter并添加参数和值。

cmd.AddWithParameter("@EventName","Your value here")