2

私はCDATAを使用して、すべての複数行のSQL文字列を「現状のまま」保存しています(いくつかのstackoverflowの古い回答に感謝します)。

Dim cmd As String = <![CDATA[
INSERT INTO devices
VALUES (
    NULL , 
    'ONE', 
    'TWO', 
    (
        SELECT manufacturer_id FROM manufacturers WHERE manufacturer_name = "Bloom"
    )
)
]]>.Value()

問題は、VB変数を使用するためにこれにブレーキをかける必要があることです。複数のCDATAの代わりに別の方法がありますか?

<![CDATA[ ...... ]]>.Value() + myVBvar +  <![CDATA[ ...... ]]>.Value()
4

2 に答える 2

5

SqlParametersを使用してみてください

Dim commandString As String = <![CDATA[
  INSERT INTO blah VALUES (@One, @Two, @Three, @n)
 ]]>,Value()

Using command As SqlCommand = new SqlCommand(commandString, connection)
  command.Parameters.AddWithValue("@One", valueOne)
  command.Parameters.AddWithValue("@Two", valueTwo) '  etc...

  '  command.execute
End Using
于 2013-01-22T21:22:14.233 に答える
1

関連性があるため、「 VB.NETの複数行の文字列」からの回答の変形を再投稿しています。

基本的に、VB変数の前にCDATAタグを終了し、その後に再度追加して、CDATAがVBコードをキャプチャしないようにする必要があります。複数のCDATAブロックがあるため、コードブロック全体をタグでラップする必要があります。

Dim cmd As String = <sql><![CDATA[
INSERT INTO devices
VALUES (
  NULL , 
  ']]><%= varOne %><![CDATA[', 
  ']]><%= varTwo %><![CDATA[', 
  (
    SELECT manufacturer_id
    FROM manufacturers
    WHERE manufacturer_name = "]]><%= manufacturerName %><![CDATA["
  )
)
]]></sql>.value
于 2014-06-06T17:40:55.673 に答える