图书数据库操作界面升级

今年年初,我写了一篇名为《图书管理库以及操作界面》的文章(链接:http://blog.csdn.net/qq_32897527/article/details/50493313),但是由于技术问题,导致程序不是很优化,界面也不是很友好。最近得空稍微研究了下,对界面进行了升级。

1、使用表格进行数据项显示

升级前 升级后

#coding:gbk
import wx,sqlite3
import wx.lib.sheet as sheet

class find(wx.Frame):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        rel = conn.execute('SELECT * FROM library')
        re = rel.fetchall()

        if self.s.GetValue().encode('gbk') == '按书名':
            t=[]
            for i in re:
                if i[1] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按出版社':
            t=[]
            for i in re:
                if i[2] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按价格':
            t=[]
            for i in re:
                if i[3] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按分类':
            t=[]
            for i in re:
                if i[4] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '查询全部':
            t = re
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '选择查询项':
            dial = wx.MessageDialog(None,'请选择查询项','结果',wx.YES_NO)
            dial.ShowModal()

    def __init__(self):
        wx.Frame.__init__(self, None, -1, title='查询数据',
                pos=(390,200),size=(410, 400),style=wx.CAPTION | wx.CLOSE_BOX)
        panel = wx.Panel(self)
        panel.SetBackgroundColour('white')

        self.s = wx.ComboBox(panel,value='选择查询项',
                choices=['按书名','按出版社','按价格','按分类','查询全部'],pos=(20,10),size=(100,20))
        self.t = wx.TextCtrl(panel,pos=(130,10),size=(185,20))

        self.cs = sheet.CSheet(panel)
        self.cs.SetLabelBackgroundColour('white')
        self.cs.SetNumberCols(4)
        self.cs.SetNumberRows(0)
        self.cs.SetSize((360,320))
        self.cs.SetPosition((20,40))
        column = ['书名','出版社','价格','类别']
        for col in range(4):
            self.cs.SetColLabelValue(col,column[col])

        btn=wx.Button(panel,label="查询",pos=(325,10),size=(50,20))
        btn.Bind(wx.EVT_BUTTON,self.load)

if __name__ == '__main__':
    app = wx.App()
    find().Show()
    app.MainLoop()

主要使用wx.lib.sheet库创建表格

2、用notebook将find、insert、delete三个程序合并到一起

原先的是find、insert、delete三个程序进行三个不同的操作,但是这样太过麻烦。所以使用notebook可以实现一个程序实现三个操作。

#coding:gbk
import wx,sqlite3

class find(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        rel = conn.execute('SELECT * FROM library')
        t = 0
        h = 40
        if self.x > 0:
            for i in range(self.x):
                h1 = 60 + 20*i
                wx.StaticText(self, -1,'                           ',(20,h1))
                wx.StaticText(self, -1,'                           ',(40,h1))
                wx.StaticText(self, -1,'                           ',(120,h1))
                wx.StaticText(self, -1,'                           ',(220,h1))
                wx.StaticText(self, -1,'                           ',(260,h1))

        if self.s.GetValue().encode('gbk') == '按书名':
            for i in rel.fetchall():
                if i[1] == self.t.GetValue():
                    t = t + 1
                    h = h + 20
                    id = '%d' %i[0]
                    name = i[1].encode('gbk')
                    pub = i[2].encode('gbk')
                    price = i[3].encode('gbk')
                    type = i[4].encode('gbk')
                    wx.StaticText(self, -1,id,(20,h))
                    wx.StaticText(self, -1,name,(40,h))
                    wx.StaticText(self, -1,pub,(120,h))
                    wx.StaticText(self, -1,price,(220,h))
                    wx.StaticText(self, -1,type,(260,h))
            dial = wx.MessageDialog(None,'共有%d个结果'%t,'结果',wx.YES_NO)
            dial.ShowModal()
            self.x = t

        if self.s.GetValue().encode('gbk') == '按出版社':
            for i in rel.fetchall():
                if i[2] == self.t.GetValue():
                    t = t + 1
                    h = h + 20
                    id = '%d' %i[0]
                    name = i[1].encode('gbk')
                    pub = i[2].encode('gbk')
                    price = i[3].encode('gbk')
                    type = i[4].encode('gbk')
                    wx.StaticText(self, -1,id,(20,h))
                    wx.StaticText(self, -1,name,(40,h))
                    wx.StaticText(self, -1,pub,(120,h))
                    wx.StaticText(self, -1,price,(220,h))
                    wx.StaticText(self, -1,type,(260,h))
            dial = wx.MessageDialog(None,'共有%d个结果'%t,'结果',wx.YES_NO)
            dial.ShowModal()
            self.x = t

        if self.s.GetValue().encode('gbk') == '按价格':
            for i in rel.fetchall():
                if i[3] == self.t.GetValue():
                    t = t + 1
                    h = h + 20
                    id = '%d' %i[0]
                    name = i[1].encode('gbk')
                    pub = i[2].encode('gbk')
                    price = i[3].encode('gbk')
                    type = i[4].encode('gbk')
                    wx.StaticText(self, -1,id,(20,h))
                    wx.StaticText(self, -1,name,(40,h))
                    wx.StaticText(self, -1,pub,(120,h))
                    wx.StaticText(self, -1,price,(220,h))
                    wx.StaticText(self, -1,type,(260,h))
            dial = wx.MessageDialog(None,'共有%d个结果'%t,'结果',wx.YES_NO)
            dial.ShowModal()
            self.x = t

        if self.s.GetValue().encode('gbk') == '按分类':
            for i in rel.fetchall():
                if i[4] == self.t.GetValue():
                    t = t + 1
                    h = h + 20
                    id = '%d' %i[0]
                    name = i[1].encode('gbk')
                    pub = i[2].encode('gbk')
                    price = i[3].encode('gbk')
                    type = i[4].encode('gbk')
                    wx.StaticText(self, -1,id,(20,h))
                    wx.StaticText(self, -1,name,(40,h))
                    wx.StaticText(self, -1,pub,(120,h))
                    wx.StaticText(self, -1,price,(220,h))
                    wx.StaticText(self, -1,type,(260,h))
            dial = wx.MessageDialog(None,'共有%d个结果'%t,'结果',wx.YES_NO)
            dial.ShowModal()
            self.x = t

        if self.s.GetValue().encode('gbk') == '查询全部':
            for i in rel.fetchall():
                t = t + 1
                h = h + 20
                id = '%d' %i[0]
                name = i[1].encode('gbk')
                pub = i[2].encode('gbk')
                price = i[3].encode('gbk')
                type = i[4].encode('gbk')
                wx.StaticText(self, -1,id,(20,h))
                wx.StaticText(self, -1,name,(40,h))
                wx.StaticText(self, -1,pub,(120,h))
                wx.StaticText(self, -1,price,(220,h))
                wx.StaticText(self, -1,type,(260,h))
            dial = wx.MessageDialog(None,'共有%d个结果'%t,'结果',wx.YES_NO)
            dial.ShowModal()
            self.x = t

        if self.s.GetValue().encode('gbk') == '选择查询项':
            dial = wx.MessageDialog(None,'请选择查询项','结果',wx.YES_NO)
            dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        self.s = wx.ComboBox(self,value='选择查询项',
                choices=['按书名','按出版社','按价格','按分类','查询全部'],pos=(20,10),size=(100,20))
        self.t = wx.TextCtrl(self
                             ,pos=(130,10),size=(100,20))
        self.x = 0

        wx.StaticText(self, -1, "id",(20,40))
        wx.StaticText(self, -1, "书名",(40,40))
        wx.StaticText(self, -1, "出版社",(120,40))
        wx.StaticText(self, -1, "价格",(220,40))
        wx.StaticText(self, -1, "类别",(260,40))

        btn=wx.Button(self,label="查询",pos=(240,10),size=(50,20))
        btn.Bind(wx.EVT_BUTTON,self.load)

class insert(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        n1=self.t1.GetValue()
        n2=self.t2.GetValue()
        n3=self.t3.GetValue()
        n4=self.t4.GetValue()
        s=[n1,n2,n3,n4]
        conn.execute("insert into library(name,pub,price,type) values(?,?,?,?)",s)
        conn.commit()
        dial = wx.MessageDialog(None,'成功插入数据!','结果',wx.YES_NO)
        dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        st1 = wx.StaticText(self, -1, "请输入书名:",(20,10))
        st2 = wx.StaticText(self, -1, "请输入出版社:",(20, 60))
        st3 = wx.StaticText(self, -1, "请输入价格:",(20, 110))
        st4 = wx.StaticText(self, -1, "请选择分类:",(20, 160))

        self.t1 = wx.TextCtrl(self,pos=(20,30),size=(100,20))
        self.t2 = wx.TextCtrl(self,pos=(20,80),size=(100,20))
        self.t3 = wx.TextCtrl(self,pos=(20,130),size=(100,20))
        self.t4 = wx.ComboBox(self,value='未选择',
                choices=['文学','理工科','计算机','外语','其他'],pos=(20,180),size=(100,20))

        btn=wx.Button(self,label="插入",pos=(20,210),size=(100,30))
        btn.Bind(wx.EVT_BUTTON,self.load)

class delete(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        n1=self.t1.GetValue()
        s=[n1]
        conn.execute('DELETE FROM library where name=?',s)
        conn.commit()
        dial = wx.MessageDialog(None,'成功删除数据!','结果',wx.YES_NO)
        dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        st1 = wx.StaticText(self, -1, "请输入要删除的书名:",(20,20))

        self.t1 = wx.TextCtrl(self,pos=(20,40),size=(150,20))

        btn=wx.Button(self,label="删除",pos=(20,70),size=(100,30))
        btn.Bind(wx.EVT_BUTTON,self.load)

if __name__ == '__main__':
    app = wx.App(False)
    frame = wx.Frame(None, title="图书管理")
    nb = wx.Notebook(frame)

    nb.AddPage(find(nb), "查找图书")
    nb.AddPage(insert(nb), "插入图书")
    nb.AddPage(delete(nb), "删除图书")

    frame.Show()
    app.MainLoop()

3、界面美化

#coding:gbk
import wx,sqlite3
import wx.lib.buttons as buttons
import wx.lib.sheet as sheet

class find(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        rel = conn.execute('SELECT * FROM library')
        re = rel.fetchall()

        if self.s.GetValue().encode('gbk') == '按书名':
            t=[]
            for i in re:
                if i[1] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按出版社':
            t=[]
            for i in re:
                if i[2] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按价格':
            t=[]
            for i in re:
                if i[3] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '按分类':
            t=[]
            for i in re:
                if i[4] == self.t.GetValue():
                    t.append(i)
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '查询全部':
            t = re
            rows = len(t)
            self.cs.SetNumberRows(rows)
            for row in range(rows):
                self.cs.SetRowLabelValue(row,'%d'%t[row][0])
                for col in range(4):
                    self.cs.SetCellValue(row,col,t[row][col+1])
            dial = wx.MessageDialog(None,'共有%d个结果'%rows,'结果',wx.YES_NO)
            dial.ShowModal()

        if self.s.GetValue().encode('gbk') == '选择查询项':
            dial = wx.MessageDialog(None,'请选择查询项','结果',wx.YES_NO)
            dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        self.s = wx.ComboBox(self,value='选择查询项',
                choices=['按书名','按出版社','按价格','按分类','查询全部'],pos=(20,10),size=(100,20))
        self.t = wx.TextCtrl(self,pos=(130,10),size=(185,20))

        self.cs = sheet.CSheet(self)
        self.cs.SetLabelBackgroundColour('#ffffff')
        self.cs.SetNumberCols(4)
        self.cs.SetNumberRows(0)
        self.cs.SetSize((550,520))
        self.cs.SetPosition((20,40))
        column = ['书名','出版社','价格','类别']
        for col in range(4):
            self.cs.SetColLabelValue(col,column[col])

        btn=wx.Button(self,label="查询",pos=(325,10),size=(50,20))
        btn.Bind(wx.EVT_BUTTON,self.load)

class insert(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        n1=self.t1.GetValue()
        n2=self.t2.GetValue()
        n3=self.t3.GetValue()
        n4=self.t4.GetValue()
        s=[n1,n2,n3,n4]
        conn.execute("insert into library(name,pub,price,type) values(?,?,?,?)",s)
        conn.commit()
        dial = wx.MessageDialog(None,'成功插入数据!','结果',wx.YES_NO)
        dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        st1 = wx.StaticText(self, -1, "请输入书名:",(20,10))
        st2 = wx.StaticText(self, -1, "请输入出版社:",(20, 60))
        st3 = wx.StaticText(self, -1, "请输入价格:",(20, 110))
        st4 = wx.StaticText(self, -1, "请选择分类:",(20, 160))

        self.t1 = wx.TextCtrl(self,pos=(20,30),size=(200,20))
        self.t2 = wx.TextCtrl(self,pos=(20,80),size=(200,20))
        self.t3 = wx.TextCtrl(self,pos=(20,130),size=(200,20))
        self.t4 = wx.ComboBox(self,value='未选择',
                choices=['文学','理工科','计算机','外语','其他'],pos=(20,180),size=(200,20))

        btn=wx.Button(self,label="插入",pos=(20,210),size=(100,30))
        btn.Bind(wx.EVT_BUTTON,self.load)

class delete(wx.Panel):
    def load(self,event):
        conn=sqlite3.connect("F:\\Python\My Program\library_system\library.db")
        conn.cursor()
        n1=self.t1.GetValue()
        s=[n1]
        conn.execute('DELETE FROM library where name=?',s)
        conn.commit()
        dial = wx.MessageDialog(None,'成功删除数据!','结果',wx.YES_NO)
        dial.ShowModal()

    def __init__(self,parent):
        wx.Panel.__init__(self,parent)

        st1 = wx.StaticText(self, -1, "请输入要删除的书名:",(20,20))

        self.t1 = wx.TextCtrl(self,pos=(20,40),size=(200,20))

        btn=wx.Button(self,label="删除",pos=(20,70),size=(100,30))
        btn.Bind(wx.EVT_BUTTON,self.load)

def OnPaint(event):
    dc = wx.PaintDC(lp)
    dc.DrawBitmap(map,28,50)

def bt1(event):
    b1.SetBackgroundColour('#011b27')
    b2.SetBackgroundColour('#052b3b')
    b3.SetBackgroundColour('#052b3b')
    rp1.Show(1)
    rp2.Show(0)
    rp3.Show(0)
    frame.Refresh()

def bt2(event):
    b1.SetBackgroundColour('#052b3b')
    b2.SetBackgroundColour('#011b27')
    b3.SetBackgroundColour('#052b3b')
    rp1.Show(0)
    rp2.Show(1)
    rp3.Show(0)
    frame.Refresh()

def bt3(event):
    b1.SetBackgroundColour('#052b3b')
    b2.SetBackgroundColour('#052b3b')
    b3.SetBackgroundColour('#011b27')
    rp1.Show(0)
    rp2.Show(0)
    rp3.Show(1)
    frame.Refresh()

app = wx.App(False)
frame = wx.Frame(None, title='图书管理',size=(800,600),style=wx.CAPTION | wx.CLOSE_BOX)
frame.SetBackgroundColour('#0a3142')

rp1 = find(frame)
rp2 = insert(frame)
rp3 = delete(frame)
rp1.SetBackgroundColour('#ffffff');rp1.SetSize((600,600));rp1.SetPosition((200,0))
rp2.SetBackgroundColour('#ffffff');rp2.SetSize((600,600));rp2.SetPosition((200,0))
rp3.SetBackgroundColour('#ffffff');rp3.SetSize((600,600));rp3.SetPosition((200,0))
rp2.Show(0)
rp3.Show(0)

lp = wx.Panel(frame,-1)
lp.SetSize((200,600))
b1 = buttons.GenButton(lp, -1, '查询图书',pos=(0,250),size=(200,50))
b2 = buttons.GenButton(lp, -1, '插入图书',pos=(0,300),size=(200,50))
b3 = buttons.GenButton(lp, -1, '删除图书',pos=(0,350),size=(200,50))
b1.SetBackgroundColour('#011b27');b1.SetForegroundColour('#ffffff');b1.SetBezelWidth(1);b1.SetFont(wx.Font(15, wx.DEFAULT, wx.NORMAL, wx.NORMAL))
b1.Bind(wx.EVT_BUTTON,bt1)
b2.SetBackgroundColour('#052b3b');b2.SetForegroundColour('#ffffff');b2.SetBezelWidth(1);b2.SetFont(wx.Font(15, wx.DEFAULT, wx.NORMAL, wx.NORMAL))
b2.Bind(wx.EVT_BUTTON,bt2)
b3.SetBackgroundColour('#052b3b');b3.SetForegroundColour('#ffffff');b3.SetBezelWidth(1);b3.SetFont(wx.Font(15, wx.DEFAULT, wx.NORMAL, wx.NORMAL))
b3.Bind(wx.EVT_BUTTON,bt3)
map = wx.Bitmap('photo.png')
wx.EVT_PAINT(lp,OnPaint)

frame.Show()
app.MainLoop()

都是些基本的wxpython,用于装饰界面

时间: 2024-11-05 13:36:53

图书数据库操作界面升级的相关文章

Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作

正如前面一篇文章的介绍,当使用Servlet提交表单和JSP数据库查询时,总是相互交叉着的处理,要么在JSP中通过<%...%>内嵌Java代码操作数据库,要么JSP中通过Post方法提交表单Form,在Java中通过Servlet获取请求/响应,再通过Java中out.println("<HTML>...")输出数据库中值. 此篇文章主要讲述通过DAO和Java Bean操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.参考前文: Java+My

Java Web的数据库操作(一)

一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与数据库系统之间假期了一座桥梁. JDBC由一组用Java语言编写的类和接口组成,它对数据库的操作提供了基本方法,但由于数据库种类跟多且多有不同,所以对数据库的细节操作由数据库厂商进行实现,且厂商需要提供数据库的驱动程序,下图为Java程序与数据库相交互的示意图: 2.JDBC连接数据库的过程 l 

跟我学Android之十三 SQLite数据库操作

本章内容 第1节  SQLite数据库概述 第2节  SQLite建库建表 第3节 管理数据库连接 第4节  操作数据库数据 第5节  数据绑定 本章目标 掌握SQLite数据的基本特点与工具使用. 熟练掌握SQLite建库建表的方法. 熟练掌握连接SQLite数据库的方法. 熟悉SQLite数据库的升级与建立方法. 掌握通过数据绑定完成数据显示的方法. SQLite数据库简介 SQLite是一种非常流行的嵌入式数据库,是由C语言编写而成,是一款轻型关系型数据库,支持SQL,支持多种操作系统,完

SQLiteDatabase数据库操作详解

今天花了点时间总结了一下数据的相关知识android中系统自带的数据库SQLiteDatabase数据库,这种数据库操作起来比ormLite数据库(第三方的)麻烦点,但是我对这种数据库操作比较熟悉所以我就采用了这种数据库,如有错误欢迎大家批评指正,谢谢 1.SQLiteDatabase SQLiteDatabase本身是一个数据库的操作类,但是如果想进行数据库的操作,还需要android.database.sqlite.SQLiteOpenHelper类的帮助,在执行SQL语句时execSQL(

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)

彻底抛弃MFC, 全面应用Qt 已经不少时间了.除了自己看书按步就班做了十几个验证性的应用,还正式做了3个比较大的行业应用,总体感觉很好.Native C++ 下, Qt 基本是我用过的最简便的界面库了.遇到了一些问题,大都解决的很顺利,回头想想,还是有几个问题很有意思,尤其是数据库应用.这里把我的经历分享一下. 1.线程内注册与连接数据库的竞争问题 文档上对多线程下数据库应用的注意事项写的很简明,一个线程创建的 QSqlDatabase 对象和 查出来的 QSqlQuery 对象只能给本线程用

十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)

本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer.Oracle.DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时操作方面走了不少弯路:现在从以下几个方面进行说明: 一.不同数据库操作 此处用到了工厂模式来实现不同数据库操作,看下图 AbstractDatabase是一个抽象类,定义了所有对数据库的操作抽象方法,包括执行一个SQL语句.执行存储过程.事务操作等 [Serializable] public abs

微信公众平台开发(25) 数据库操作

原文: http://www.cnblogs.com/imaker/p/5491433.html 一.简介 前面讲解的功能开发都是简单的调用API 完成的,没有对数据库进行操作.在接下来的高级功能开发中,需要使用到数据库,所以在这一篇中,将对MySQL 数据库的操作做一下简单的介绍,以供读者参考. 二.思路分析 百度开发者中心提供了强大的云数据库(包括MySQL, MongoDB, Redis),在这一节教程中,我们将对大家比较熟悉的MySQL 数据库进行操作演示,实现微信与数据库的交互. 在B

Android内部自带的SQLite数据库操作dos命令

1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.操作简单,你如果是之前学过其他的数据库的基础的话, 操作起来可以说是举手之劳. 2:这个SQLite数据库的数据类型有哪些. Integer  整型  有符号整数 -1,0,1,2,3- Real 浮点型以 8字节 IEEE 浮点数存储. Text. 值是文本字符串,使用数据