简体   繁体   English

我收到此类型错误:条件表达式中的数据类型不匹配

[英]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.

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