INSERT INTO

Agora que temos a tabela, precisamos entrar com dados nela. E aí voltamos para o gtk e os pacotes.

Vamos usar objetos Entry e o interessante, no caso, é que, como o tamanho da coluna não é definido na criação da tabela, podemos definí-lo na entrada de dados.

O comando SQL para inserir uma nova linha é:

INSERT INTO nome-da-tabela VALUES ('valor texto',valor numérico,...)

É preciso entrar com valores para todos os campos e na ordem que eles ocupam na tabela.

Vamos fazer um exercício - um pacote, agora - simples, entrando dados na tabela que criamos na aula anterior:

Só apresentamos, como sempre, uma parte do cógigo. Lembre-se dos imports específicos para o SQLite, visto em aula anterior.

#...
   def __init__(self):
       Activity.__init__(self)
       #Usar sempre letras mono-espaçadas quando trabalhar com db
       gtk.settings_get_default().props.gtk_font_name="Bitstream Vera Sans Mono 18"
       #Criando base para layout
       self.fix = gtk.Fixed()
       self.add(self.fix)
       self.fix.show()
       #Criando os TextBoxes para entrada dos dados
       self.matricE = gtk.Entry()
       self.matricE.set_size_request(100,40)
       #Colocando o cursor na área
       self.matricE.set_text("")
       self.matricE.grab_focus()
       self.fix.put(self.matricE, 100,100)
       self.matricE.show()
       self.nomeE = gtk.Entry()
       #Definindo tamanho do campo
       self.nomeE.set_max_length(20)
       self.nomeE.set_size_request(300,40)
       self.fix.put(self.nomeE, 100,180)
       self.nomeE.show()
       self.idadeE = gtk.Entry()
       self.idadeE.set_size_request(100,40)
       self.fix.put(self.idadeE, 100,260)
       self.idadeE.show()
       self.codnivelE = gtk.Entry()
       self.codnivelE.set_size_request(100,40)
       self.fix.put(self.codnivelE, 100,340)
       self.codnivelE.show()
       #Criando Button
       self.gv = gtk.Button("GRAVAR")
       self.fix.put(self.gv, 200,400)
       self.gv.show()
       self.gv.connect("clicked",self.grava,None)
       #Criando Label para mensagens
       self.lb = gtk.Label("Entre matricula,nome,idade e nivel")
       self.fix.put(self.lb, 200,450)
       self.lb.show()
      
        
   def grava(self,widget,data=None):
       conn = sqlite.connect("/databases/alunos.db")
       c = conn.cursor()
       self.matric = self.matricE.get_text()
       self.nome = self.nomeE.get_text()
       self.idade = self.idadeE.get_text()
       self.codnivel = self.codnivelE.get_text()
       #Montando o comando SQL
       com = "INSERT INTO cad VALUES('"+self.matric+"','"+self.nome+"',"+self.idade+",'"+self.codnivel+"')"
       c.execute(com)
       #NÃO SE ESQUEÇA DO COMMIT!!!
       conn.commit()
       self.lb.set_text("Gravado.Entre com outro ou saia da atividade."
       #Limpando entradas
       self.matricE.set_text("")
       self.nomeE.set_text("")
       self.idadeE.set_text("")
       self.codnivelE.set_text("")
       c.close()
       conn.close()

Repare que no caso da "idade", como é numérico, não tem aspas no comando.


LIÇÂO ANTERIOR PRÓXIMA LIÇÂO
ÍNDICE HOMEPAGE