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 语句

MS Access 使用 SQL INSERT INTO - SELECT FROM 插入记录

在 vb.net 中插入 INTO

VBA 中的 INSERT INTO 查询