2014-11-22 99 views
-1

这是我的代码的一部分,当我运行它它给了我一个错误“Comando.ExecuteNonQuery()”。 对不起,这是出现错误“标准表达式中的数据类型不匹配”的文本。 我将“Direccion as char”更改为String,这就是假定的,我把(')放在values部分。在MI表“标准表达式中的数据类型不匹配”。 VS.NET 2010

Function Agregar_Registro(ByVal Id As String, ByVal Nombre As String, ByVal Direccion As String, ByVal Edad As String) As Boolean 
    'CONVETIR 
    Dim COD As Integer = Convert.ToInt32(Id) 
    'CONEXION (CREA UN TIPO PUENTE DE CONNECCION ENTRE LA BBDD Y LA APLICCION) 
    Dim Conexion As New OleDbConnection 
    Conexion.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data Source = F:\Proyecto Empresa\Proyecto Empresa BBDD\BBDD Maestra.accdb; Persist Security info = false" 
    Dim CadenaSql As String = "Insert into Personal(id, Nombre, Direccion, Edad) " 
    CadenaSql = CadenaSql + "VALUES(" & COD & " , " 
    CadenaSql = CadenaSql + "      '" & Nombre & "' , " 
    CadenaSql = CadenaSql + "      '" & Direccion & "' , " 
    CadenaSql = CadenaSql + "      '" & Edad & "') " 
    Dim Comando As OleDbCommand = Conexion.CreateCommand() 
    Comando.CommandText = CadenaSql 
    Conexion.Open() 
    Comando.ExecuteNonQuery() 
    Conexion.Close() 
    Return True 
End Function 

和MI数据类型有:

ID - Number 
Nombre - Text 
Direccion - Text 
Edad - Number 
+1

请[编辑](http://stackoverflow.com/posts/27072910/edit)你的问题补充完整的错误消息;不要简单地说“它给了我一个错误”。此外,请告诉我们您的“个人”表格列的数据类型。 – 2014-11-22 01:14:22

+1

“它给了我一个错误”不是一个问题描述,除非你包含关于你收到什么“错误”的信息。我们没有其他代码或数据库进行测试,所以如果您不提供这些信息,我们无法为您提供帮助。什么是**具体错误**你会得到,包括**确切的错误信息**? – 2014-11-22 01:20:21

+0

好吧,如果Edad是一个数字,传递一个字符串(使用ticks和padding)将导致该错误。使用SQL参数,**不** **打勾 – Plutonix 2014-11-22 01:30:06

回答

-1

如果农布雷和Direccion是文本,那么你需要引用字符串查询。像这样:

Dim CadenaSql As String = "Insert into Personal(id, Nombre, Direccion, Edad) " 
CadenaSql = CadenaSql + "VALUES(" & COD & " , " 
CadenaSql = CadenaSql + "      '" & Nombre & "' , " 
CadenaSql = CadenaSql + "      '" & Direccion & "' , " 
CadenaSql = CadenaSql + "      " & Edad & ") " 

或者你也可以使用参数:

Dim CadenaSql As String = "Insert into Personal (id, Nombre, Direccion, Edad) VALUES (@COD, @Nombre, @Direccion, @Edad)" 

Dim Comando As OleDbCommand = Conexion.CreateCommand() 
Comando.CommandText = CadenaSql 
Comando.Parameters.AddWithValue("@COD", COD) 
Comando.Parameters.AddWithValue("@Nombre", Nombre) 
Comando.Parameters.AddWithValue("@Direccion", Direccion) 
Comando.Parameters.AddWithValue("@Edad", Edad) 
Conexion.Open() 
Comando.ExecuteNonQuery() 
Conexion.Close() 
相关问题