2012-12-13 160 views
0

使用SELECT语句中我查询数据库,并返回结果的格式为:1,名称2,名称3字符串转换为SQL SELECT语句

根据数据库条目这个结果可能有任意数量的名字:姓名1 ,NAME2 ...名(n)

我想用这个数据来查询另一数据库,像这样:

SELECT Name, SerialNo, Model FROM InstrumentTable where ID=1 and InstName IN name1,name2,name3 

为了做到这一点,我需要1,名称2,名称3转换为( 'name1','name2','name3')

我试图分裂字符串转换成字符串

数组
Dim ref1s As String = cmdf1.ExecuteScalar() 
    Dim fields() As String = Nothing 
    fields = ref1s.Split(",") 

,然后在阵列

For i As Integer = 0 To fields.Count - 1 
    MsgBox(String.Concat("'", fields(i), "'")) 
Next 

级联他们,但我一直无法弄清楚如何做到这一点呢。

在字符串的开始和结尾添加括号不应该是一个问题,只需将引号添加到每个名称并用逗号分隔即可。

任何人都可以帮助我吗?

+0

HTTP:/ /stackoverflow.com/questions/1 968763/pass-an-array-as-a-ado-net-dbparameter – igrimpe

+0

如果您使用的是sql server 2008或更高版本,则toucans将使用表值参数。 –

回答

1

你有位以前

For i As Integer = 0 To fields.Count - 1 
    fields[i] = String.Concat("'",fields[i],"'") 
Next 

然后

strValue = fields.Join(',') 
1

user557425,

像这样的东西可能指向你在正确的方向:

Dim lst As List(Of String) 
For i As Integer = 0 to fields.Count - 1 
    if i = fields.Count - 1 Then 
     lst.Add(fields(i) & "'") 
    Else 
     lst.Add(fields(i) & "','") 
    End if 
Next 

Dim sqlSB As StringBuilder 
sqlSB.Append("SELECT * FROM TABLE WHERE BLAH IN(") 
For each s As String in lst 
    sqlSB.Append(s) 
Next 

'use the stringbuilder as command text in a SqlCommand...