con.close与con=nothing的区别

con.close()只是关闭了连接,并没有清除con,要想再使用它需要con.open()再重新开启就可以了。

ADO中用的是传址,所以如果con=nothing就表示清除了con,外部函数就用不了了。如果想还使用连接,就必须再创建一个con对象,然后再打开使用。

今日做系统的时候遇到了这个问题:

首先,先执行了下面的代码

 

Sub AddQuitRecord(ByVal backcard As Entry.BackCard)
        Dim sql As String = "Insert into backcard values('" & backcard.CardID & "','" & backcard.BackDate & "','" & backcard.BackTime & "','" & backcard.BackCash & "','" & backcard.Actor & "')"
        Dim sqlcmd As SqlCommand = New SqlCommand(sql, con)
        Try
            con.Open()
            sqlcmd.ExecuteReader()
            con.Close()
        Catch ex As Exception

        End Try
        If Not IsNothing(con) Then
            con.Close()
            con = Nothing
        End If
    End Sub

由于上面代码中已经执行了con=Nothing,导致下面的运行到con.open()的时候,就会报错。

在这里,我们没有必要清楚con,所以我们需要关闭连接就可以了,所以正解是将上面的con=nothing删去。在执行到下面代码是就不会报错了。

 Public Function QuitCard(ByVal quitcardd As Entry.BackCard) As Boolean
        Dim sql As String = "Update card set static='" & False & "' where cardnumber='" & quitcardd.CardID & "'"
        Dim sqlcmdd As SqlCommand = New SqlCommand(sql, con)
        Try
            con.Open()
            Return sqlcmdd.ExecuteNonQuery > 0
        Catch ex As Exception
            Return False
        End Try
        If Not IsNothing(con) Then
            con.Close()
        End If
    End Function



 

转载于:https://www.cnblogs.com/liu765023051/archive/2012/01/29/2813619.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
from PyQt5.QtWidgets import QApplication from PyQt5.uic import loadUi import pymysql class Stats: def init(self): # 从文件中加载UI定义 # 从 UI 定义中动态创建一个相应的窗口对象 # 注意:里面的控件对象也成为窗口对象的属性了 # 比如 self.ui.button , self.ui.textEdit self.ui = loadUi("Form - untitled.ui") # 信号和槽 self.ui.login.clicked.connect(self.handleCalc) def handleCalc(self): hostaddr = self.ui.hostaddr.text() username = self.ui.username.text() password = self.ui.password.text() database = self.ui.database.text() tablename = self.ui.tablename.text() con = connect(hostaddr,username,password,database,tablename) con.connect_to_database() # 连接数据库 # con = pymysql.connect(host=hostaddr, # user=username, # password=password, # database=database, # charset='utf8mb4', # ) # cur = con.cursor() # statement = "select * from {table} where id=1".format(table=tablename) # cur.execute(statement) # data = cur.fetchone() # print(data) # con.close() class connect: def init(self,hostaddr,username,password,database,tablename): self.hostaddr=hostaddr self.username=username self.password=password self.database=database self.tablename=tablename def connect_to_database(self): con = pymysql.connect(host=self.hostaddr, user=self.username, password=self.password, database=self.database, charset='utf8mb4', tablename=self.tablename, ) cur = con.cursor() statement = "select * from {table} where id=1".format(table=tablename) cur.execute(statement) data = cur.fetchone() print(data) con.close() if name == 'main': app = QApplication([]) stats = Stats() stats.ui.show() app.exec_()修改一下
最新发布
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值