Reputation: 37
I'm trying to create a form to edit the datagridview which is data-bind to an access database, but when I was querying the database it threw an exception "Data type mismatch in criteria expression". Here's my code/select query:
OleDbCommand cmd = conn.CreateCommand();
string query = "SELECT * FROM DataServisan WHERE NomorNota=?";
conn.Open();
cmd.CommandText = query;
cmd.Parameters.Add(new OleDbParameter { Value = nomorNota, DbType = DbType.String });
OleDbDataReader dr = cmd.ExecuteReader();
Upvotes: 1
Views: 402
Reputation: 24957
There is no DbType.String
in OleDbType
enumeration definition. You can use VarChar
, VarWChar
, LongVarChar
or LongVarWChar
depending on length of string value when using OleDbParameter
constructor:
var parameter = new OleDbParameter("ParamName", OleDbType.VarWChar);
parameter.Value = nomorNota;
cmd.Parameters.Add(parameter);
Alternative way to define parameter value:
cmd.Parameters.Add("ParamName", OleDbType.VarWChar);
cmd.Parameters["ParamName"].Value = nomorNota;
References:
OleDbParameter Class (MSDN Docs)
OleDbParameterCollection.Add Method (MSDN Docs)
OleDbType Enumeration vs. Microsoft Access Data Types (MS Support)
Upvotes: 2