Insert into select表复制语句

Insert是SQL中常用的语句,主要用途就是向表中添加数据。下面说说Insert子句的几种形式:

1、Insert Into Table(field1,fields2,……)values(value1,value2,……)

这种语法形式的Insert语句,一般用于向表中所有字段或者部分字段添加字符串。

如果是向表中部分字段添加数据,table后面的括号内容就不能省略。形式就是上面的形式Insert Into Table(field1,fields2,……)values(value1,value2,……);

如果是向表中所有字段添加数据,table后面的括号就可以省略。就是这样:Insert Into Table values(value1,value2,……)

2、Insert Into Table1 Select value1,value2,value3,…… from table2 where ……

这种语法形式的Insert语句,主要用于表复制。它能将Table2中的部分或者全部数据复制到Table1中。

如果我们要实现的功能是复制Table2中的一部分数据,和一部分字符串,我们只需要将Table2中所需数据和所需字符串放在Select后面。Insert语句会自动识别。

下面来个例子:

今日做收费系统的时候,我想实现这样一个功能:就是将卡表中的部分数据(最新余额)连同BLL层传过来的字符串一起复制到充值记录表中,这是就要用到上面讲的Insert Into Select 表复制语句了。

我们来看下面的实现:

 

 ''' <summary>
    ''' 向充值表中增加充值记录,添加时为True
    ''' </summary>
    ''' <param name="chargeRec">AddChargeRecord</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function AddChargeRecord(ByVal chargeRec As Entry.ChargeRecord) As Boolean
        Dim sql As String = "Insert Into ChargeRecordset select  '" &
            chargeRec.CardID & "'," & "card.newestcash" & ",'" &
            chargeRec.ChargeDate & "','" & chargeRec.ChargeTime & "','" &
            chargeRec.Actor & "'" & " from card where card.cardnumber='" & chargeRec.CardID & "'"
        Dim sqlcmd As SqlCommand = New SqlCommand(sql, con)
        Try
            con.Open()
            sqlcmd.ExecuteReader()
            Return True
        Catch ex As Exception
            con.Close()
            con = Nothing
            Return False
        End Try
        If Not IsNothing(con) Then
            con.Close()
            con = Nothing

        End If
    End Function


posted on 2012-01-28 16:02  刘正权的博客  阅读(437)  评论(0编辑  收藏  举报