[英]I got this type error:Data type mismatch in criteria expression
I use C# to insert data into access, and got this type of error. 我使用C#将数据插入访问中,并遇到这种类型的错误。 I don't think it is a type error. 我不认为这是类型错误。
My codes are as follows: 我的代码如下:
OleDbConnection oleDbConn = new OleDbConnection();
oleDbConn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\fgao16\Dropbox\lab\website\mydatabase.mdb;User Id=admin;Password=;";
oleDbConn.Open();
string creattable = "create table mytable2([ID] char(50),[Radiologist Name] char(50),[Interesting Cases Folder] char(50),[Procedure] char(50),[Ordering Physician] char(50),[Procedure Date] char(50),[Indications] char(50),[FieFindings] varchar(255),primary key([ID]))";
OleDbCommand oComm = new OleDbCommand(creattable, oleDbConn);
oComm.ExecuteNonQuery();
//string strInsertString = "INSERT INTO Table1 (ID,fCollumn2) VALUES (@strCollumn1,@fCollumn2)";
string strInsertString = "INSERT INTO Table1 ([ID],[Radiologist Name],[Interesting Cases Folder],[Procedure],[Ordering Physician],[Procedure Date],[Indications],[FieFindings]) VALUES (@ID,@Radiologist_Name,@Interesting_Cases_Folder,@Procedure,@Ordering_Physician,@Procedure_Date,@Indications,@Findings)";
oComm = new OleDbCommand(strInsertString, oleDbConn);
oComm.Parameters.Add("@ID", OleDbType.Char,50);
oComm.Parameters["@ID"].Value = a;
oComm.Parameters.Add("@Radiologist_Name", OleDbType.Char,50);
oComm.Parameters["@Radiologist_Name"].Value = b;
oComm.Parameters.Add("@Interesting_Cases_Folder", OleDbType.Char,50);
oComm.Parameters["@Interesting_Cases_Folder"].Value = c;
oComm.Parameters.Add("@Procedure", OleDbType.Char,50);
oComm.Parameters["@Procedure"].Value = d;
oComm.Parameters.Add("@Ordering_Physician", OleDbType.Char,50);
oComm.Parameters["@Ordering_Physician"].Value = e;
oComm.Parameters.Add("@Procedure_Date", OleDbType.Char,50);
oComm.Parameters["@Procedure_Date"].Value = f;
oComm.Parameters.Add("@Indications", OleDbType.Char,50);
oComm.Parameters["@Indications"].Value = g;
oComm.Parameters.Add("@Findings", OleDbType.VarChar,255);
oComm.Parameters["@Findings"].Value = h;
//@ID,@Radiologist_Name ,@,@ ,@,@, @ ,@
// string strInsertString = "INSERT INTO Table1 ([ID],[Radiologist Name],[Interesting Cases Folder],[Procedure],[Ordering Physician],[Procedure Date],[Indications],[FieFindings]) VALUES ('8','7','6','5','4','3','2','1')";
oComm.ExecuteNonQuery();
oleDbConn.Close();
Problem : The Exception Data type mismatch in criteria expression
comes when there is a mismatch in DataType that is Expected and provided. 问题:当期望和提供的Data type mismatch in criteria expression
时,将出现Data type mismatch in criteria expression
的异常Data type mismatch in criteria expression
。
in your query your ID
seems to be an Integer
type. 在查询中,您的ID
似乎是Integer
类型。 but you are providing the value as Char
Type. 但您将值提供为“ Char
类型”。
Solution : you need to provide the Integer parameters with OleDbType.Integer
as parameter type. 解决方案:您需要提供OleDbType.Integer
作为参数类型的Integer参数。
Replace This : 替换为:
oComm.Parameters.Add("@ID", OleDbType.Char,50);
oComm.Parameters["@ID"].Value = a;
With This: 有了这个:
oComm.Parameters.Add("@ID", OleDbType.Integer);
oComm.Parameters["@ID"].Value = a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.