2013-12-10 1 views
0

C#을 사용하여 데이터를 액세스에 삽입했으며이 오류가 발생했습니다. 나는 타입 에러라고 생각하지 않는다. 다음과 같이이 형식 오류가 발생했습니다. 조건 식의 데이터 형식이 일치하지 않습니다.

내 코드는 다음과 같습니다

 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(); 

답변

0

문제 : 예상하고 제공되는 데이터 형식에 일치하지 않는 경우는 예외 Data type mismatch in criteria expression가 제공됩니다.

검색어에 IDInteger 형식 인 것 같습니다. 값은 Char 유형으로 제공됩니다.

해결책 : 정수 유형 매개 변수로 OleDbType.Integer을 제공해야합니다.

이 교체 :이

oComm.Parameters.Add("@ID", OleDbType.Char,50); 
     oComm.Parameters["@ID"].Value = a; 

:

oComm.Parameters.Add("@ID", OleDbType.Integer); 
     oComm.Parameters["@ID"].Value = a; 
관련 문제