问题
I have this query for Ms Access and im using C# and Ole DB commands. It works on Ms Access but when I'm passing the query from C# using OleDB, nothing happened. Anyway here's my code:
SQL query
SELECT * FROM tblIssue WHERE id LIKE '*2*' AND dateChecque LIKE '**'AND +
issueTo LIKE '**' AND byTheName LIKE '**' AND bankName LIKE '**' AND accountNo LIKE '**' +
AND checqueNo LIKE '**' AND amount LIKE '**' AND being LIKE '**' AND whoDeleted LIKE '**' +
AND whyDeleted LIKE '**' AND dateCreated LIKE '**';
C# code
try
{
DataTable newDt = new DataTable();
OleDbDataAdapter newSda = new OleDbDataAdapter(sqlQuery , conn);
newSda.Fill(newDt);
if (newDt.Rows.Count > 0)
{
dataGridView1.DataSource = newDt.DefaultView;
_hasData = true;
}
else
{
_hasData = false;
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString()); conn.Close();
}
回答1:
Queries performed from within the Microsoft Access application itself normally use *
and ?
as wildcard characters for the LIKE
operator. OleDb connections to an Access database from an external application should use the %
and _
wildcard characters instead. (The latter are actually the more commonly-used wildcard characters in other SQL dialects.)
回答2:
From http://technet.microsoft.com/en-us/library/cc966377.aspx :
Microsoft Jet uses partial match (or "wildcard") characters with the Like operator that are different from those used in most SQL dialects. The asterisk (*) character matches zero or more characters and is equivalent to the percent (%) character in ANSI SQL. The other Microsoft Jet partial match characters are the question mark (?), which matches any character in a single field, and the number sign (#), which matches any digit in a single field.
来源:https://stackoverflow.com/questions/17000204/ms-access-sql-like-query-from-c-sharp