【问题标题】:LIKE expression does not work a query in C#LIKE 表达式在 C# 中的查询不起作用
【发布时间】:2017-06-29 08:19:48
【问题描述】:

我想搜索包含 3 个或更多“#”的记录。

在 MSAccess 中,我可以写这个并显示结果:

SELECT * FROM AlmLotes WHERE Lote LIKE '[#][#][#]*';

但在 C# 中不起作用。

DataTable dtResultats = new DataTable();

string strConnectionSource = MYCONNECTIONSTRING

OleDbConnection connAccess = new OleDbConnection(strConnectionSource);
connAccess.Open();

string strSQL = "SELECT * FROM AlmLotes WHERE Lote LIKE '[#][#][#]*'";

OleDbCommand cmd = new OleDbCommand(strSQL, connAccess);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmd);
dtResultats = new DataTable();

    try
    {
        myDataAdapter.Fill(dtResultats);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }

    for (int i = 0; i < dtResultats.Rows.Count; i++)
    {
        var rows = dtResultats.Rows[i];
        for (int z = 0; z < dtResultats.Columns.Count; z++)
        {
            Console.WriteLine(dtResultats.Columns[z].ColumnName + ": " + rows[z] + Environment.NewLine);
        }
    }
Console.ReadKey();

MSAcces 中的 SQL 查询显示 5 个结果。 C# 中的 SQL 查询显示 0 个结果。

【问题讨论】:

  • 此代码中的其他查询完美运行。
  • 你查询的字段是只有[#][#][#]*还是有别的?
  • @Rekcs 我要查询的字段如下:##########
  • 请发布解决方案作为答案,而不是作为问题的更新。这是为了帮助未来的访客并避免混淆。谢谢。

标签: c# sql ms-access


【解决方案1】:

试试这个:

string strSQL = @"SELECT * FROM AlmLotes WHERE Lote LIKE LIKE '[[#]%'";

【讨论】:

  • 相同,0 个结果。但是如果我用普通的字符或数字做就行了,我认为C#看不懂方括号[]
  • 为什么你使用方括号,而你只使用####
  • 因为 de Brackets 的意思是我想从字面上搜索 de SHARP,并且在 MS Access Works 中
  • 如果它确实有效,现在让我看看。我已经更新了它@Tr3ndiX
  • 您应该将问题标记为已回答,以便让其他人知道@Tr3ndiX
【解决方案2】:

所以 Access 女士使用 *,但 C# OleDb 使用 %。您可以将* 替换为%

string strSQL = @"SELECT * FROM AlmLotes WHERE Lote LIKE '###%'";

【讨论】:

    【解决方案3】:

    解决方案是参数:

            string strSQL = "SELECT * FROM AlmLotes WHERE Lote LIKE @PARAM1";
    
            OleDbCommand cmd = new OleDbCommand(strSQL, connAccess);
            OleDbParameter param = cmd.CreateParameter();
            param.DbType = DbType.String;
            param.Direction = ParameterDirection.Input;
            param.OleDbType = OleDbType.VarChar;
            param.ParameterName = "PARAM1";
            param.Value = "###%";
            cmd.Parameters.Add(param);
            OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(cmd);
            dtResultats = new DataTable();
    

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 1970-01-01
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多