简体   繁体   English

LIKE表达式不适用于C#中的查询

[英]LIKE expression does not work a query in C#

I want to search the records that have 3 or more '#'. 我想搜索具有3个或更多“#”的记录。

In MSAccess I can Write this and show me the results: 在MSAccess中,我可以编写此代码并向我显示结果:

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

But in C# don't works. 但是在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();

The SQL Query in MSAcces show me 5 results. MSAcces中的SQL查询向我显示5个结果。 THE SQL QUery in C# show me 0 results. C#中的SQL查询显示了0个结果。

尝试这个:

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

So Ms Access use * , but C# OleDb use % . 因此Access女士使用* ,但是C#OleDb使用% You can replace * to % . 您可以将*替换为%

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

The solution are the Parameters: 解决方案是参数:

        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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM