选择列等于数组中某个字符串值的行

时间:2013-01-20 21:14:12

标签: c# sql equals rows

我正在尝试将相关行添加到datatable中,我只想要列值等于其他sql表中的一个值的行,这是我的代码:

try
{
     sc.Open();
     for (int i = 0; i < queryTokens.Length; i++)
     {
          cmd = new SqlCommand("INSERT INTO QueryIndex (Term) Values ('" + queryTokens[i] + "')", sc);
          cmd.ExecuteNonQuery();
     }
     cmd = new SqlCommand("SELECT * FROM TermsIndex Where Term EXIST (Select Term From QueryIndex)");
     SqlDataAdapter da = neuw SqlDataAdapter(cmd);
     da.Fill(tempTable);
     da.Dispose();
     sc.Close();
}
catch (Exception e)
{
     Console.WriteLine(e.ToString());
}

插入的第一部分进展顺利我确定,但在第二部分,我希望你们都明白我正在尝试做什么,我知道我在这里有语法错误所以请纠正我,我'得到此异常消息:{“值不能为空。\ r \ nParameter name:dataTable”}空异常..

这是我的sql create table:

CREATE TABLE [dbo].[TermsIndex]
(
    [ID] VARCHAR(35) NOT NULL,
    [Term] VARCHAR(35)  NOT NULL,
    [Frequency] int NOT NULL,
    [Offset] VARCHAR(MAX) NOT NULL,
)


CREATE TABLE [dbo].[QueryIndex]
(
    [Term] VARCHAR(MAX) NOT NULL,
)

那么为什么我得到那个空错误? 无论如何我正在创建一个表只是为了能够将它的条目与第一个的列进行比较,我已经有了它的字符串数组,任何机会能够将该列值与更改的字符串数(令牌)进行比较并返回行结果如果它等于sql命令中的那些字符串之一?或者更优雅的方式来获得想要的结果?

2 个答案:

答案 0 :(得分:1)

我假设您的代码中有DataTable tempTable;。你必须初始化它。

DataTable tempTable = new DataTable();

答案 1 :(得分:0)

您可以通过以下几种方式进行查询:

SELECT DISTINCT T.* FROM TermsIndex T
INNER JOIN QueryIndex Q ON T.Term = Q.Term;

SELECT T.* FROM TermsIndex T
WHERE T.Term IN (SELECT Q.Term FROM QueryIndex Q);

SELECT T.* FROM TermsIndex T
WHERE EXISTS(SELECT Q.Term FROM QueryIndex Q WHERE Q.Term = T.Term);

SELECT T.* FROM TermsIndex T
WHERE T.Term IN('term1', 'term2', 'term3');

注意:您发布的代码中没有dataTable

相关问题