VB6当字段为空时如何按原样从resultset插入表

VB6当字段为空时如何按原样从resultset插入表,vb6,Vb6,上表定义 CREATE TABLE [dbo].[TABLE001] ( [T001_int] [int] NULL, [T001_char] [char](100) NULL, [T001_decimal] [decimal](5, 0) NULL ) CREATE TABLE [dbo].[TABLE002] ( [T002_int] [int] NULL, [T002_char] [char](100) NULL,

上表定义

CREATE TABLE [dbo].[TABLE001]
    (
    [T001_int] [int] NULL,
    [T001_char] [char](100) NULL,
    [T001_decimal] [decimal](5, 0) NULL
    )

CREATE TABLE [dbo].[TABLE002]
    (
    [T002_int] [int] NULL,
    [T002_char] [char](100) NULL,
    [T002_decimal] [decimal](5, 0) NULL
    )

INSERT INTO TABLE002 VALUES (NULL, NULL, NULL)
上面是我的VB6代码

什么时候开始!T002_int=null,发生错误

什么时候开始!T002_char=null,插入为“”

什么时候开始!T002_decimal=null,发生错误

我想将NULL作为NULL插入

我怎样才能解决这个问题

请不要告诉我我不应该这样做

我想知道如何以空值插入。

您可以尝试以下方法:

    Dim strQuery    As String
    Dim rdoEnv      As rdoEnvironment
    Dim rdoCon      As rdoConnection
    Dim rdoRS       As rdoResultset

    strQuery = ""
    strQuery = strQuery & " SELECT * FROM TABLE002"

    Set rdoEnv = rdoEnvironments(0)
    Set rdoCon = rdoEnv.OpenConnection("", rdDriverNoPrompt, True, MyCon)
    Set rdoRS = rdoCon.OpenResultset(strQuery, rdOpenKeyset, rdConcurReadOnly)

    Do Until rdoRS.EOF = True

        strQuery = ""
        strQuery = strQuery & " INSERT INTO TABLE001"
        strQuery = strQuery & " VALUES"
        strQuery = strQuery & " (" & rdoRS!T002_int & ", '" & rdoRS!T002_char & "'," & rdoRST002_decimal & ")"

        rdoCon.Execute (strQuery)
        rdoRS.MoveNext

    Loop
一些注意事项:

  • 插入时,始终指定列
  • 如果
    T002\u char
    列包含引号或其他 弄乱了SQL语法。
    最好使用事先准备好的陈述

不,一个。@GSerg你当然是对的:我只是想解决OP的小问题,忘记了巨大的错误……当字段为空时,我不能执行cstr(字段)。该语句检查字段是否为空。如果是,则返回字符串“NULL”。否则,它会将值转换为字符串。正如@GSerg所说:使用准备好的语句而不是简单的字符串,以避免出现严重问题。请不要通过破坏您的帖子为其他人做更多的工作。通过在堆栈溢出上发布,您已经在下为SO授予了分发该内容的不可撤销的权利。根据SO政策,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请查看
Dim int_value As String
Dim str_value As String
Dim dec_value As String

int_value = IIf(IsNull(myrs!T002_int), "NULL", CStr(myrs!T002_int))
str_value = IIf(IsNull(myrs!T002_char), "NULL", "'" & myrs!T002_char & "'")
dec_value = IIf(IsNull(myrs!T002_decimal), "NULL", CStr(myrs!T002_decimal))

strQuery = ""
strQuery = strQuery & " INSERT INTO TABLE001"
strQuery = strQuery & " (T001_int, T001_char, T001_decimal)"
strQuery = strQuery & " VALUES"
strQuery = strQuery & " (" & int_value & ", " & str_value & ", " & dec_value & ")"