VB.net:INSERT INTO 查询在 Access 数据库中生成所有“-1”
Posted
技术标签:
【中文标题】VB.net:INSERT INTO 查询在 Access 数据库中生成所有“-1”【英文标题】:VB.net: INSERT INTO query generating all "-1" in Access Database 【发布时间】:2016-09-09 19:04:25 【问题描述】:我有以下代码和查询:
Dim sqlCom As New OleDb.OleDbCommand("INSERT INTO clasificador (codigo, deudor, oportunidad, banca, ejecutivo, garantia, ciiu, ras, actividad, fecha, analista, estatus, concepto, ult_act, ingresos, tipo, cumplimiento, multa_pot, roa2, ie2, ant, act, covenants, faltas, oportunidades, costos, pmaa, potencial) VALUES (codigo=@codigo, deudor=@deudor, oportunidad=@oportunidad, banca=@banca, ejecutivo=@ejecutivo, garantia=@garantia, ciiu=@ciiu, ras=@ras, actividad=@actividad, fecha=@fecha, analista=@analista, estatus=@estatus, concepto=@concepto, ult_act=@ult_act, ingresos=@ingresos, tipo=@tipo, cumplimiento=@cumplimiento, multa_pot=@multa_pot, roa2=@roa2, ie2=@ie2, ant=@ant, act=@act, covenants=@covenants, faltas=@faltas, oportunidades=@oportunidades, costos=@costos, pmaa=@pmaa, potencial=@potencial)", conn)
sqlCom.Parameters.AddWithValue("@codigo", txtCodigo.Text)
sqlCom.Parameters.AddWithValue("@deudor", txtDeudor.Text)
sqlCom.Parameters.AddWithValue("@oportunidad", txtOportunidad.Text)
sqlCom.Parameters.AddWithValue("@banca", drpBanca.Text)
sqlCom.Parameters.AddWithValue("@ejecutivo", txtEjecutivo.Text)
sqlCom.Parameters.AddWithValue("@garantia", drpGarantia.Text)
sqlCom.Parameters.AddWithValue("@ciiu", txtCIIU.Text)
sqlCom.Parameters.AddWithValue("@ras", txtRAS.Text)
sqlCom.Parameters.AddWithValue("@actividad", txtActividad.Text)
sqlCom.Parameters.AddWithValue("@fecha", dteFecha.Text)
sqlCom.Parameters.AddWithValue("@analista", txtAnalista.Text)
sqlCom.Parameters.AddWithValue("@estatus", drpEstatus.Text)
sqlCom.Parameters.AddWithValue("@concepto", drpConcepto.Text)
sqlCom.Parameters.AddWithValue("@ult_act", dteUltAct.Text)
sqlCom.Parameters.AddWithValue("@ingresos", txtIngresos.Text)
sqlCom.Parameters.AddWithValue("@tipo", txtTipo.Text)
sqlCom.Parameters.AddWithValue("@cumplimiento", drpCumplimiento.Text)
sqlCom.Parameters.AddWithValue("@multa_pot", txtMultaPot.Text)
sqlCom.Parameters.AddWithValue("@roa2", txtROA2.Text)
sqlCom.Parameters.AddWithValue("@ie2", txtIE2.Text)
sqlCom.Parameters.AddWithValue("@ant", txtAnt.Text)
sqlCom.Parameters.AddWithValue("@act", txtAct.Text)
sqlCom.Parameters.AddWithValue("@covenants", txtCovenants.Text)
sqlCom.Parameters.AddWithValue("@faltas", drpFaltas.Text)
sqlCom.Parameters.AddWithValue("@oportunidades", txtOportunidades.Text)
sqlCom.Parameters.AddWithValue("@costos", txtCostos.Text)
sqlCom.Parameters.AddWithValue("@pmaa", txtPMAA.Text)
sqlCom.Parameters.AddWithValue("@potencial", txtPotencial.Text)
Try
'MsgBox("GO!")
Select Case MsgBox("¿Seguro que desea crear?", MsgBoxStyle.YesNo, "Confirmar")
Case MsgBoxResult.Yes
sqlCom.ExecuteNonQuery()
MsgBox("¡Listo!")
Me.Show()
Case MsgBoxResult.No
End Select
'MsgBox("DONE!")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
我没有收到任何类型的错误,一切正常,但是插入数据库的信息在所有字段中都是“-1”(不带引号)(日期字段“1899 年 12 月 29 日”除外”)。我在 *** 中可能遇到了 20 个问题,但它们都是一般语法或拼写错误。
有什么想法吗?
【问题讨论】:
1.您将所有参数添加为字符串(varchar)。我不会说西班牙语? (我认为这就是你所拥有的)但也许不是你的架构中的所有字符串数据类型。因此,您可能应该将输入.Text
转换为适当的类型,例如 int 或 DateTime,然后再将其分配给 AddWithValue
。 2)您正在使用 UPDATE 语法,插入语法列出列,然后是后面的值。
they're all general syntax or spelling errors
但是看看正在使用的代码 - 他们在做你的代码吗?很可能不会。
为什么有人会因为菜鸟的错误而投反对票?我认为这是一个合法的问题,在网站上没有先例...#my2ct
【参考方案1】:
每一个都是错误的:
INSERT ... VALUES (codigo=@codigo, deudor=@deudor
^^^^^^^^
您不是在插入您的值,而是在插入一堆相等测试的结果。您正在插入一条记录,因此没有什么可以测试是否相等,并且所有测试都失败了,因此您的 -1。
插入语法是
INSERT INTO sometable (field1, field2, ...) VALUES (value1, value2, ...)
所以你应该有这个:
INSERT ... VALUES (@codigo, @deudor, etc....)
【讨论】:
感谢@MarcB,它就像一个魅力!对不起我的菜鸟:(以上是关于VB.net:INSERT INTO 查询在 Access 数据库中生成所有“-1”的主要内容,如果未能解决你的问题,请参考以下文章
“INSERT INTO 中的语法错误”ms-access vb.net [重复]
“INSERT INTO 语句中的语法错误”错误 - 错误是啥?
MS Access 的 SQL INSERT INTO 语句