从 VB.NET 访问查询 - 插入数据,尽管它们是 NULL

发布于 2024-09-26 15:13:35 字数 373 浏览 3 评论 0原文

我需要将数据从数据库插入到另一个数据库。我从 VB.NET 运行此查询:

例如:

Insert into DBDestino.tablaDest (campo1,campo2)
select valor1,valor2 
from DBOrigen.tablaOrigen 

字段“campo1”是整数(在 DBdestino 中),

但有时值“valor1”(在 DBorigen 中)为 NULL。如果我运行上一个查询,它会返回错误并且不会插入任何数据。

尽管“valor1”有时为 NULL,我如何插入数据?

I need to insert data from DB to another DB. I run this query from VB.NET:

for example:

Insert into DBDestino.tablaDest (campo1,campo2)
select valor1,valor2 
from DBOrigen.tablaOrigen 

Field "campo1" is integer (in DBdestino)

But sometimes the value "valor1" (in DBOrigen) is NULL. If I run the previous query, it returns error and does not insert any data.

How I can insert data though "valor1" sometimes is NULL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

神魇的王 2024-10-03 15:13:35

我怀疑您的问题是由于 valor1 中的 Null 值造成的,除非 Campo1 字段拒绝 Null。

您需要 Access 数据库引擎能够接受的 INSERT 语句。例如,在打开 DBDestino.mdb 的 Access 中执行此语句:

INSERT INTO tablaDest ( campo1, campo2 )
SELECT valor1, valor2
FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';

我不精通 VB.Net,但我认为您可以打开与 DBDestino.mdb 的连接,然后执行在 Access 中工作的相同 INSERT 语句。

Imports System.Data.OleDb
Module Module1
    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim icount As Integer
    Dim strInsert As String
    Sub Main()
        cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                 "Data Source=C:\Access\DBDestino.mdb;")
        cn.Open()
        strInsert = "INSERT INTO tablaDest ( campo1, campo2 ) " & _
            "SELECT valor1, valor2 " & _
            "FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';"
        cmd = New OleDbCommand(strInsert, cn)
        icount = cmd.ExecuteNonQuery
        Debug.Print(icount)
        cn.Close()
    End Sub
End Module

我在我的系统上进行了测试,来自 tablaOrigen 的值成功插入到 tablaDest 中,包括 Null。

I doubt your problem is due to Null values in valor1, unless the campo1 field rejects Nulls.

You need an INSERT statement which Access' database engine will accept. For example, this statement executed in Access with DBDestino.mdb open:

INSERT INTO tablaDest ( campo1, campo2 )
SELECT valor1, valor2
FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';

I'm not proficient with VB.Net, but I think you can open a connection to DBDestino.mdb, and then execute the same INSERT statement which works in Access.

Imports System.Data.OleDb
Module Module1
    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim icount As Integer
    Dim strInsert As String
    Sub Main()
        cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                 "Data Source=C:\Access\DBDestino.mdb;")
        cn.Open()
        strInsert = "INSERT INTO tablaDest ( campo1, campo2 ) " & _
            "SELECT valor1, valor2 " & _
            "FROM tablaOrigen IN 'C:\Access\DBOrigen.mdb';"
        cmd = New OleDbCommand(strInsert, cn)
        icount = cmd.ExecuteNonQuery
        Debug.Print(icount)
        cn.Close()
    End Sub
End Module

I tested that on my system, and the values from tablaOrigen were successfully inserted into tablaDest, Nulls included.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文