【问题标题】:DataSet coming as Empty数据集为空
【发布时间】:2013-06-13 07:10:02
【问题描述】:

我有一个名为 searchDB 的方法,它根据用户输入的关键字搜索数据库。

我将搜索结果存储在 DataSet 中。此方法仅搜索一列。

        public DataSet searchDB(string identifier)
        {
            DataSet dataSet = new DataSet();
            OleDbConnection oleConn = new OleDbConnection(connString);

            try
            {
                oleConn.Open();
                string sql = "SELECT [identifier] FROM [Category3] WHERE [identifier] LIKE '" + identifier + "*'";
                //string sql = "SELECT [identifier] FROM [Category3]";

                OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
                dataAdapter.Fill(dataSet, "identifier");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                oleConn.Close();
            }
            if (dataSet.Tables[0].Rows.Count == 0)
                {
                    return null;
                }
            else
                return dataSet;
        }

变量“标识符”从textbox 中获取值。 假设,当我将“windows”作为变量的值传递时,它应该返回 1 行。 但是当我放断点时,它正在达到 if 条件

if (dataSet.Tables[0].Rows.Count == 0)
{
    return null;
}

并返回 0 行。

谁能指出我的错误。

【问题讨论】:

  • 使用这个:string sql = "SELECT [identifier] FROM [Category3] WHERE [identifier] LIKE '%" + identifier + "%'";

标签: c# asp.net ms-access web-applications


【解决方案1】:

您似乎使用 SQL LIKE 错误(除非您的 identifier 列确实以星号结尾):

SELECT [identifier] FROM [Category3] WHERE [identifier] LIKE '" + identifier + "*'

like 使用% 字符作为通配符,而不是*,所以试试:

SELECT [identifier] FROM [Category3] WHERE [identifier] LIKE '" + identifier + "%'

编辑:我没有看到这个问题与 MS Access 有关,但答案仍然适用。请参阅以下 SO 问题:Why does a LIKE query in Access not return any records?

Access 数据库引擎(Jet、ACE 等)有两种 ANSI 查询模式,每种都使用不同的通配符 > 字符表示 LIKE:

  • ANSI-89 查询模式使用 *
  • ANSI-92 查询模式使用 %

【讨论】:

  • 但是我用的是ms访问,我以为它用*
  • 它确实有效...嗯,我认为访问使用 * 而不是 %
  • 嗯,是的,我检查了 MS Access,他们确实似乎在使用*。但如果它对你有用,那么一切都很好。
  • 在您的问题下方查看我的评论,我回答了您。
【解决方案2】:

LIKE 过滤器应该使用 % 而不是 * 像这里:

 LIKE '" + identifier + "%'

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多