0

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

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

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

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

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

那么查询的外观如何以及如何将结果放入数组中?

4

1 回答 1

1

如果你想要一个连接使用这个:

SELECT DISTINCT name + surname FROM MyTable

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

   SELECT Col1 FROM MyTable
    UNION
    SELECT Col2 FROM MyTable

只要具有相同的数据类型Col1,联合就可以工作。Col2获得数据后,您可以将其带回客户端(通过存储过程)到数据集、数据表或 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')

从 #test 中选择 col1 并从 #test 中选择 col2

DROP TABLE #Test

结果是:

bob
bob2
jane
jane1
jon
marc
marc2
phil
ste
于 2012-04-13T18:22:58.843 回答