首页 > 解决方案 > 在将连接字符串作为查询字符串传递后,SqlDataAdapter 查询不起作用,这是怎么回事?

问题描述

我正在使用 C# 和 SQL Server 2014 创建桌面应用程序。在我SqlDataAdapter的 中,将连接字符串作为变量传递后,SQL 查询不起作用。如果我将查询写为直接字符串 - 它工作正常。但是手动输入 100 多个标签是愚蠢的。我还想不通 - 我的代码有什么问题?

// block 17. created for splitting unique word from whole user tag text and searching with this tags in database; it returns a unique word!

String Input = search.Text;
Input = Input + " ";

String[] Word_Box = new String[1000];
String Word = "";
int T = 0, Len;
Len = Input.Length;
bool  flag = false;

for (int i = 0; i < Len; i++)
{
    if (Input[i] != ' ')
    {
        Word = Word + Input[i];
        flag = true;
    }
    else if (Input[i] == ' ' && flag == true)
    {
        Word_Box[T++] = Word;
        Word = "";
        flag = false;
    }
}
// block end

// block 18. start for adjusting SQL query string for searching purpose :)
String Query_String;
Query_String = "select * from Tbl_Test3 where";
int WordCount = T - 2;

for (int i = 0; i < T; i++)
{
    Query_String = Query_String + " Tags like '%\"+ \""+ Word_Box[i] +"\" + \"%' ";
    if (i <= WordCount)
    {
        Query_String += "OR ";
    }
}
// block end

con.Open();

//Query_String = "select * from Tbl_FinalTest3 where Tags like '%"+ "Codeforces" + "%' OR  Tags like '%"+ "Topcoder" + "%' ";
SqlDataAdapter adpt = new SqlDataAdapter(Query_String, con);
DataTable dt = new DataTable();
adpt.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();

没有显示错误,执行后,datagridview 不显示任何数据,直接字符串的相同输出完美显示。

我对那条线毫无疑问,那有什么问题?

Query_String = Query_String + " Tags like '%\"+ \""+ Word_Box[i] +"\" + \"%' ";

谢谢:)

标签: c#sqlsql-server

解决方案


根据@Venkataraman R 的评论-我解决了这个问题。以前不知道这件事。它将对我们许多人有用。最后,它可以很好地与-

Query_String = Query_String + $" Tags like '%{Word_Box[i]}%' ";

推荐阅读