Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在数据库中搜索数据_Sql Server_Database_Visual Studio 2008_Search - Fatal编程技术网

Sql server 在数据库中搜索数据

Sql server 在数据库中搜索数据,sql-server,database,visual-studio-2008,search,Sql Server,Database,Visual Studio 2008,Search,以下是我的web应用程序的aspx.cs文件: 受保护的无效按钮1\u单击(对象发送者,事件参数e) { 我的数据库有一个大约24列的表。我创建的DropDownList有一个选项来选择这些列名。下面有一个搜索框,用户可以输入关键字进行搜索 我想将DropDownList选择保存为“categoryName”,并将SearchBox输入保存为“searchText”。当我运行应用程序时,出现以下错误: 描述:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪,以了解有关错误及其在代码中起

以下是我的web应用程序的aspx.cs文件:

受保护的无效按钮1\u单击(对象发送者,事件参数e) {

我的数据库有一个大约24列的表。我创建的DropDownList有一个选项来选择这些列名。下面有一个搜索框,用户可以输入关键字进行搜索

我想将DropDownList选择保存为“categoryName”,并将SearchBox输入保存为“searchText”。当我运行应用程序时,出现以下错误:

描述:在执行当前web请求期间发生未经处理的异常。请查看堆栈跟踪,以了解有关错误及其在代码中起源的详细信息

异常详细信息:System.Data.SqlClient.SqlException:关键字“FROM”附近的语法不正确

源错误: 第48行:myDataReader=returnResults.ExecuteReader(CommandBehavior.CloseConnection)

我不知道如何从这里取得进展,因此非常感谢您的帮助。如果您需要更多信息,请询问。

这个怎么样:

SqlCommand returnResults = new SqlCommand("SELECT categoryName FROM Teacher WHERE categoryName LIKE '%" + searchText + "%'", connection);
这是假设categoryName是您想要返回的列,也是您想要搜索的列。您的原始查询做了一些错误的事情:使用变量而不是列名,并且没有引用LIKE值

如果要搜索的列是动态的,并且由下拉框选择,并且该值存储在变量categoryName中:

SqlCommand returnResults = new SqlCommand("SELECT " + categoryName + " FROM Teacher WHERE " + categoryName + " LIKE '%" + searchText + "%'", connection);

看起来您可能缺少空格

“从教师中选择”+categoryName+”,其中“+searchText+”类似于“+”%“+searchText+”%,connection);

会有类似的回报吗

从MyColumn(如%john%)所在的教师处选择MyColumnName

我认为你应该这样做

从教师中选择“+categoryName+”,其中“+searchText+”类似“+”%“+searchText+”%”,连接);

得到


从教师中选择mycolumnname,mycolumn如“%john%”

Fosco已经为您的问题给出了有效的答案,但是您应该真正使用参数化SQL语句来防止SQL注入攻击。请参见一些问题,如在其中抛出断点,并仔细检查正在构造的实际查询。当您将查询复制到另一个介质中时,它是否有效?尽管我是关于空格问题的Ting在另一个答案中指出。我运行了你的代码,得到了以下错误:异常详细信息:System.Data.SqlClient.SqlException:无效的列名“categoryName”。无效的列名“categoryName”。这使我认为我的值存储不正确。果然,它们的值为null。这是我没有看到的代码o存储值:受保护的void DropDownList1_SelectedIndexChanged(对象发送方,事件参数e){categoryName=e.ToString();}什么是将下拉列表选择记录为字符串的正确代码?感谢您的帮助。我刚刚开始,所以它是全新的。在数据库中,您尝试搜索的列名是什么?它是否确实是用户可选择的?如果列名是用户选择,我添加了另一个查询,但您可能需要提供有关表结构。感谢您的帮助。我更新了第一篇文章以反映您要求的信息,但它基本上是一个大约有24列的标准表。您放置在变量categoryName中的下拉框的值。这是表结构中的列名吗?第二个查询应该适合您,您尝试过吗?triple'''给出了一个错误,但我按照Fosco的代码进行了清理。谢谢!
SqlCommand returnResults = new SqlCommand("SELECT " + categoryName + " FROM Teacher WHERE " + categoryName + " LIKE '%" + searchText + "%'", connection);