代码之家  ›  专栏  ›  技术社区  ›  Baga

我出现错误“尝试使用闭合连接”

  •  2
  • Baga  · 技术社区  · 7 年前

    from tkinter import *
    import pypyodbc
    import ctypes
    
    form=Tk ()
    form.title ("Add data")
    form.geometry ('400x200')
    
    #Create connection
    con = pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:/Users/HP/Desktop/PITL;DBQ=C:/Users/HP/Desktop/PITL/PITL.mdb;')
    cursor = con.cursor ()
    
    a = Entry (form, width=20, font="Arial 16")
    a.pack ()
    b = Entry (form, width=20, font="Arial 16")
    b.pack ()
    
    def Add (event):
        cursor.execute ("INSERT INTO Crime (`Number_of_article`, `ID_of_criminal`) VALUES (?, ?)", (a, b))
    
    con.commit ()
    cursor.close ()
    con.close ()
    
    Button=Button(form, text = 'PUSH ME')
    Button.pack ()
    Button.bind ('<Button-1>', Add)
    
    form.mainloop ()
    

    我的错误是:

    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
        return self.func(*args)
      File "C:\Users\HP\Desktop\PITL\ADD DATA.py", line 19, in Add
        cursor.execute ("INSERT INTO Crime (`Number_of_article`, `ID_of_criminal`) VALUES (?, ?)", (a, b))
      File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pypyodbc-1.3.4-py3.6.egg\pypyodbc.py", line 1470, in execute
        self._free_stmt(SQL_CLOSE)
      File "C:\Users\HP\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pypyodbc-1.3.4-py3.6.egg\pypyodbc.py", line 1987, in _free_stmt
        raise ProgrammingError('HY000','Attempt to use a closed connection.')
    pypyodbc.ProgrammingError: ('HY000', 'Attempt to use a closed connection.')
    

    a = '*any number*' b = '*any number*' ,程序将起作用

    a = Entry (form, width=20, font="Arial 16")
    a.pack ()
    b = Entry (form, width=20, font="Arial 16")
    b.pack ()
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Simon Hobbs    7 年前

    如果要在调用Add之前关闭连接,请将关闭调用移到代码底部。

        2
  •  0
  •   mwd    7 年前

    from tkinter import *
    import pypyodbc
    import ctypes
    
    form=Tk ()
    form.title ("Add data")
    form.geometry ('400x200')
    
    #Create connection
    con = pypyodbc.connect('DRIVER={Microsoft Access Driver(*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;    MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:/Users/HP/Desktop/PITL;DBQ=C:/Users/HP/Desktop/PITL/PITL.mdb;')
    cursor = con.cursor ()
    
    a = Entry (form, width=20, font="Arial 16")
    a.pack ()
    b = Entry (form, width=20, font="Arial 16")
    b.pack ()
    
    def Add (event):
        cursor.execute ("INSERT INTO Crime (`Number_of_article`, `ID_of_criminal`) VALUES (?, ?)", (a, b))
    
    
    Button=Button(form, text = 'PUSH ME')
    Button.pack ()
    Button.bind ('<Button-1>', Add)
    
    form.mainloop ()
    
    con.commit ()