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

本文关键字:一起 数组 插入 两列 | 更新日期: 2023-09-27 18:31:14

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

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

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

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

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

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

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

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

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 服务器管理工作室

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