如何将两列中的值插入到数组中以便以后与自动完成一起使用?

时间:2012-04-13 18:21:12

标签: c# sql-server

我正在用C#(windows窗体)和SQL-Server做一个程序,我需要从两列中取出字符串并将它们放入一个数组中。我稍后将使用该数组,以实现对某些textBox的自动完成。规则是:

  • 数组应该能够容纳任何数量的字符串 在列中,此数量可能超过500个字符串并且是可变的。
  • 我需要列中的不同值,不需要重复。

我认为我应该使用“UNION”将两列中的所有字符串和SqlDataReader放在一起,并在将字符串放入数组时使用“while”循环。

这是一个示例表,用它来向我解释:

----------------------------
|    name    |   surname   |
----------------------------
|    John    |   Jackson   |
----------------------------
|   Michael  |    Jones    |
----------------------------
|   Amanda   |    Lopez    |
----------------------------
|  Christina |    Lopez    |
----------------------------

那么查询怎么样?如何将结果放入数组?

1 个答案:

答案 0 :(得分:1)

如果你想要连接使用它:

SELECT DISTINCT name + surname FROM MyTable

如果你不想要连接,你可以这样做:

   SELECT Col1 FROM MyTable
    UNION
    SELECT Col2 FROM MyTable

只要Col1Col2具有相同的数据类型,联合就会起作用。获得数据后,您可以将其(通过sproc)返回到客户端(数据集,数据表或sqldatareader)。

其余的应该很简单,获取数据并将其存储在某种数组中。 通过某种循环

reader = GetData();
while(reader.read())
 {
  //store into an array...
 }

在sql server management studio中复制粘贴它

CREATE TABLE #Test
(
 col1 varchar(10),
 col2 varchar(10)
)

INSERT INTO #Test(col1, col2) VALUES('jon', 'jane')
INSERT INTO #Test(col1, col2) VALUES('jane', 'jane')
INSERT INTO #Test(col1, col2) VALUES('bob', 'phil')
INSERT INTO #Test(col1, col2) VALUES('marc', 'phil')
INSERT INTO #Test(col1, col2) VALUES('jon', 'jon')
INSERT INTO #Test(col1, col2) VALUES('jon', 'Jon')
INSERT INTO #Test(col1, col2) VALUES('jane1', 'jane')
INSERT INTO #Test(col1, col2) VALUES('bob2', 'phil')
INSERT INTO #Test(col1, col2) VALUES('marc2', 'phil')
INSERT INTO #Test(col1, col2) VALUES('ste', 'jane')

SELECT col1 FROM #test     联盟    SELECT col2 FROM #test

DROP TABLE #Test

结果是:

bob
bob2
jane
jane1
jon
marc
marc2
phil
ste