Dapper
Dapper copied to clipboard
ODBC query with parameter throws "[HY104] invalid precision value"
It's a very simple query with a LIKE
operator on an access database:
string sql = "SELECT FROM Users WHERE UserName LIKE ?";
var result = conn.Query<User>(sql, "%ab%"});
Throws exception:
Unhandled exception. System.Data.Odbc.OdbcException (0x80131937): ERROR [HY104] [Microsoft][ODBC Microsoft Access Driver]Invalid precision value
I also tried different parameter passing ways:
conn.Query<User>(sql, new {UserName = "%ab%"})
var dp = new DynamicParameters();
dp.Add("", "%ab%");
conn.Query<User>(sql, dp);
None of them works. But using ODBC parameter directly can query as expected:
var cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Users WHERE UserName LIKE ?";
cmd.Parameters.Add(new OdbcParameter("", "%ab%"));
var reader = cmd.ExecuteReader();
Am I missing something?
I found it may be related to the size
,
Dapper by default sets the size as 4000
which is too large for the Access string column.