C9:Database Handling

Creating a database

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.creadteDatabase)
        self.show()
    def creadteDatabase(self):
        try:
            conn = sqlite3.connect(self.ui.lineEdit.text() + ".db")
            self.ui.label_2.setText("Database is created")
        except sqlite3.Error as e:
            self.ui.label_2.setText("Some error has occurred")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Creating a database table

Final Result

C9:Database Handling

How to do it ?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton_2.clicked.connect(self.createTable)
        self.ui.pushButton.clicked.connect(self.addColumns)
        self.show()
    def addColumns(self):
        try:
            conn = sqlite3.connect(self.ui.databasenm.text()+".db")
            c = conn.cursor()
            sql = "alter table "+self.ui.databasenm.text()+" add column "+self.ui.columnmn.text()+" "+self.ui.comboBox.itemText(self.ui.comboBox.currentIndex())
            print(sql)
            c.execute(sql)
            self.ui.message.setText("column add successfully")
        except:
            self.ui.message.setText("Error in creating table")
        finally:
            conn.close()
        self.ui.columnmn.setText("")
        self.ui.columnmn.setFocus()
    def createTable(self):
        try:
            conn = sqlite3.connect(self.ui.databasenm.text()+".db")
            self.ui.message.setText("Database is connected ")
            c = conn.cursor()
            sql = "create table "+self.ui.tablenm.text()+"("+self.ui.columnmn.text()+" "+self.ui.comboBox.itemText(self.ui.comboBox.currentIndex())+");"
            print(sql)
            c.execute(sql)
            self.ui.message.setText("table is successfully created")
        except sqlite3.Error as e:
            self.ui.message.setText("Error in creating table")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Inserting rows in the specified database table

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.InsertRows)
        self.show()
    def InsertRows(self):
        sqlStatement = "insert into "+self.ui.tablenm.text()+" values("+self.ui.email.text()+","+self.ui.password.text()+");"
        print(sqlStatement)
        try:
            conn = sqlite3.connect(self.ui.datanm.text()+".db")
            with conn:
                cur = conn.cursor()
                cur.execute(sqlStatement)
                self.ui.message.setText("Row successfully")
        except sqlite3.Error as e:
            self.ui.message.setText("Error in inserting row")
        finally:
            conn.close()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Displaying rows in the specified database table

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui =Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.DisplayRows)
        self.show()
    def DisplayRows(self):
        sql = "select * from "+self.ui.lineEdit_2.text()
        try:
            conn = sqlite3.connect(self.ui.lineEdit.text()+".db")
            cur = conn.cursor()
            cur.execute(sql)
            rows = cur.fetchall()
            rowNo = 0
            for tuple in rows:
                self.ui.message.setText("")
                colNo = 0
                for columns in tuple:
                    oneC = QTableWidgetItem(columns)
                    self.ui.tableWidget.setItem(rowNo, colNo, oneC)
                    colNo += 1
                rowNo += 1
        except sqlite3.Error as e:
            self.ui.tableWidget.clear()
            self.ui.message.setText("Error in accessing table")
        finally:
            conn.close()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Navigating through the rows of the specified database table

Final Result

C9:Database Handling

How to do it?

rowNo=1
sql="SELECT * FROM User"
conn = sqlite3.connect("_Database.db")
cur = conn.cursor()
class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        cur.execute(sql)
        self.ui.first.clicked.connect(self.showFirstRow)
        self.ui.previous.clicked.connect(self.showPreviousRow)
        self.ui.next.clicked.connect(self.showNextRow)
        self.ui.last.clicked.connect(self.showLastRow)
        self.show()
    def showFirstRow(self):
        try:
            cur.execute(sql)
            row =cur.fetchone()
            if row:
                self.ui.eamil.setText(row[0])
                self.ui.passwd.setText(row[1])
        except sqlite3.Error as e:
            self.ui.message.setText("Error in accessing table")
    def showPreviousRow(self):
        global  rowNo
        rowNo -= 1
        sql = "select * from user where rowid = "+str(rowNo)
        cur.execute(sql)
        row = cur.fetchone()
        if row:
            self.ui.message.setText("")
            self.ui.eamil.setText(row[0])
            self.ui.passwd.setText(row[1])
        else:
            rowNo += 1
            self.ui.message.setText("This is the first row")
    def showNextRow(self):
        global rowNo
        rowNo += 1
        sql = "select * from user where rowid = "+str(rowNo)
        cur.execute(sql)
        row = cur.fetchone()
        if row:
            self.ui.message.setText("")
            self.ui.eamil.setText(row[0])
            self.ui.passwd.setText(row[1])
        else:
            rowNo -= 1
            self.ui.message.setText("This is the last row")
    def showLastRow(self):
        cur.execute(sql)
        for row in cur.fetchall():
            self.ui.eamil.setText(row[0])
            self.ui.passwd.setText(row[1])
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Searching a database table for specific information

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.SearchRows)
        self.show()
    def SearchRows(self):
        sql = "select password from "+self.ui.tablenm.text() + " where address like '"+self.ui.email.text()+"'"
        try:
            conn = sqlite3.connect(self.ui.databasenm.text()+".db")
            cur = conn.cursor()
            print(sql)
            cur.execute(sql)
            row = cur.fetchone()
            if row == None:
                self.ui.message.setText("sorry,nouser found with this email address")
                self.ui.passwd.setText("")
            else:
                self.ui.message.setText("email address found, password of this user is:")
                self.ui.passwd.setText(row[0])
        except sqlite3.Error as e:
            self.ui.message.setText("Error in accessing row")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Creating a sign in form

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.SearchRows)
        self.show()
    def SearchRows(self):
        sql = "select * from user where address like '"+self.ui.email.text()+ "' and password like '"+self.ui.password.text()+"'"
        try:
            conn = sqlite3.connect("_Database.db")
            cur = conn.cursor()
            cur.execute(sql)
            row = cur.fetchone()
            if row == None:
                self.ui.message.setText("sorry,Incorrect email or password")
            else:
                self.ui.message.setText("You are welcome")
        except sqlite3.Error as e:
            self.ui.message.setText("error in accessing row")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Updating a database table

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.ChangePassword)
        self.show()
    def ChangePassword(self):
        sql = "select * from user where address='"+self.ui.email.text()+"' and password='"+self.ui.oldpasswd.text()+"';"
        try:
            conn = sqlite3.connect("_Database.db")
            cur = conn.cursor()
            print(sql)
            cur.execute(sql)
            row = cur.fetchone()
            if row == None:
                self.ui.message.setText("sorry,incorrect email or password")
            else:
                if self.ui.newpassword.text() == self.ui.renewpasswd.text():
                    sql = "update user set password='"+self.ui.newpassword.text()+"' where address like '"+self.ui.email.text()+"'"
                    with conn:
                        cur.execute(sql)
                        self.ui.message.setText("Password successfully changed")
                else:
                    self.ui.message.setText("the two password don't match")
        except sqlite3.Error as e:
            self.ui.message.setText("Error in accessing row")
        finally:
            conn.close()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

Deleting a row from a database table

Final Result

C9:Database Handling

How to do it?

class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.delbutton.clicked.connect(self.DeleteUser)
        self.ui.byes.clicked.connect(self.ConfirmDelete)
        self.ui.label_4.hide()
        self.ui.byes.hide()
        self.ui.bno.hide()
        self.show()
    def DeleteUser(self):
        sql = "select *from user where address like '"+self.ui.email.text()+"' and password like '"+self.ui.passwd.text()+"'"
        try:
            conn = sqlite3.connect("_Database.db")
            cur = conn.cursor()
            cur.execute(sql)
            row = cur.fetchone()
            if row == None:
                self.ui.label_4.hide()
                self.ui.byes.hide()
                self.ui.bno.hide()
                self.ui.message.setText("sorry,incorrect email address or password")
            else:
                self.ui.label_4.show()
                self.ui.byes.show()
                self.ui.bno.show()
                self.ui.message.setText("")
        except sqlite3.Error as e:
            self.ui.message.setText("Error in accessing user account")
        finally:
            conn.close()
    def ConfirmDelete(self):
        sql = "delete from user where address= '"+self.ui.email.text()+"'"
        try:
            conn = sqlite3.connect("_Database.db")
            cur = conn.cursor()
            with conn:
                print(sql)
                cur.execute(sql)
                self.ui.message.setText("user successfully deleted")
        except sqlite3.Error as e:
            self.ui.message.setText("Error in deleting user account")
        finally:
            conn.close()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())