O objetivo deste artigo é dominar a tecnologia de programação de banco de dados por meio do sistema de gerenciamento de bibliotecas, se conectar corretamente ao banco de dados e poder consultar, inserir, excluir e modificar as informações no banco de dados.
Conteúdo: Crie uma tabela de informações bibliográficas no banco de dados, incluindo o título, autor, editora, data de publicação, número do livro e campos de preços. Projete uma interface GUI para gerenciamento de bibliografia. Existem quatro guias nessa interface, ou seja, consulta, inserir, excluir e modificar. Clique na guia de consulta e a interface que aparece inclui quatro caixas de texto: título do livro, autor, editor, número do livro, um botão e uma área de texto somente leitura. O conteúdo da caixa de texto pode estar vazio. Depois de inserir as informações de consulta correspondentes (por exemplo, você só pode inserir o título de acordo com o título do livro), clique no botão "Consulta" na interface para exibir as informações detalhadas da bibliografia que atendem aos critérios na área de texto abaixo da interface. Clique na guia Inserir e a interface que aparece contém o título do livro, o autor, a publicação, a data da publicação, o número do livro, a caixa de texto de preço e um botão. Depois de inserir as informações na caixa de texto, clique no botão "Inserir" e as informações bibliográficas são inseridas na tabela de banco de dados. Clique na guia Excluir. Há uma caixa de texto para o título e um botão na interface que aparece. Depois de inserir o título, clique no botão "Excluir". As informações bibliográficas são excluídas da tabela de banco de dados. Clique na guia Modify e a interface que aparece inclui o título do livro, autor, editora, data de publicação, número do livro, caixa de texto de preço e um botão. O título do livro inserido deve existir, caso contrário, uma caixa de mensagem será exibida e exibirá uma mensagem de erro. Depois de inserir as informações, clique no botão "Modificar" e as informações bibliográficas correspondentes na tabela de banco de dados são modificadas para o novo valor.
Código -fonte:
Bookinfo.java
* Nome do projeto: Sistema de Gerenciamento de Livros * Versão: 1.0 * Criador: Zhang Junqiang * Tempo de criação: 2016/5/26 * */biblioteca de pacotes; importar java.awt.*; importar javax.swing.*; importar java.awt.event.*; importar java.sql.*; @Suppresswarnings ("serial") classe pública bookinfo estende o jframe implementa o ActionListener {// controle no protagonista enfrenta private jlabel inputLabel; Private JTextField inputText; Pesquisa privada de jbutton; Livro JTable privado; Private JScrollPane BooksCroll; Private JButton AddBut; JButton privado ModifyBut; Private JButton Deletebut; Private JButton Refreshbut; BooktableModel particular booktableModel; public static void main (string [] args) lança SqLexception {// TODO Method Auto-Generated Stub Bookinfo bookinfo = new bookinfo (); bookinfo.setDefaultCloseoperation (jframe.exit_on_close); bookinfo.setbounds (350, 150, 600, 400); bookinfo.setVisible (true); // bookinfo.importsql (); // Exportar dados bookinfo.setMinwindowlayout (); // Definir dados} public bookinfo () lança sqlexception {// cria o controle no principal interface inputlabel = new jlabel ("digite o título do livro:"); inputText = new JTextField (10); pesquisabut = new jbutton ("Query"); booktableModel = new bookTableModel (); bookTable = new JTable (booktableModel); BooksCroll = New JScrollPane (BookTable); addBut = new jbutton ("add"); modifyBut = new jbutton ("modify"); deletebut = novo jbutton ("delete"); refreshbut = novo jbutton ("atualização"); pesquisabut.addactionListener (this); addBut.addactionListener (this); refreshbut.addactionListener (this); modifyBut.addactionListener (this); deletebut.addactionListener (isto); } void setMinwindowlayout () {// Container de layout da interface principal con1 = new container (); con1.setLayout (new FlowLayout ()); con1.add (inputlabel); con1.add (inputText); con1.add (pesquisabut); con1.add (atualização); Contêiner con2 = new container (); CON2.SETLAYOUT (new FlowLayout ()); con2.add (addbut); CON2.Add (modifyBut); CON2.Add (Deletebut); this.setLayout (new BorderLayout ()); this.add (con1, borderlayout.north); this.add (bookscroll, borderlayout.center); this.add (con2, borderlayout.south); this.validate (); } @Override public void ActionPerformed (ActionEvent E) {// TODO Método Gerado automaticamente Stub if (e.getSource () == SearchBut) {if (! This.inputText.getText (). Equals ("")) {string bookName = this.InTextTextTextTextText (). String sql = "selecione * de book_info onde book_name = '"+bookname+"'"; tente {booktableModel = new BookTableModel (SQL); bookTable.setModel (booktableModel); } catch (sqLexception e1) {// TODO BLOCO DE CAPAGEM AUTOGERATION E1.PRINTSTACKTRACE (); }} else {JoptionPane.ShowMessAgedialog (this, "Entrada não pode estar vazia", "Prompt", JoptionPane.Plain_Message); }} else if (e.getSource () == addBut) {@suppresswarnings ("não utilizado") addBookDialog addwin = new addbookdialog (this, "add book", true); this.RefreshTable (); } else if (e.getSource () == refreshBut) {this.RefreshTable (); } else if (e.getSource () == DELETEBUT) {int ROWNUM = bookTable.getSelectedRow (); if (rownum <0 || rownum> bookTable.getRowCount ()) {joptionpane.showMessagedialog (this, "não selecionado", "tip", joptionpane.plain_message); } else {//system.out.print(BookName); int n = joptionpane.showConfirmdialog (null, "Confirmar exclusão?", "Confirmar caixa de exclusão", joptionpane.yes_no_option); if (n == joptionpane.yes_option) {string booknum = (string) bookTable.getValuEat (rownum, 0); String sql = "Exclua de book_info onde book_num = '"+booknum+"'"; booktablemodel.deletebook (SQL); this.RefreshTable (); JoptionPane.showMessagedialog (isto, "deleteesuccess", "Tip", JoptionPane.Plain_Message); } else if (n == joptionpane.no_option) {return; }}} else if (e.getSource () == modifyBut) {booktable.setModel (booktableModel); int rownum = bookTable.getSelectedRow (); if (rownum <0 || rownum> booktable.getRowCount ()) {joptionpane.showMessagedialog (this, "desmarcar", "prompt", joptionpane.plain_message); } else {@suppresswarnings ("não utilizados") modifybook modifywin = new Modifybook (this, "modificar informações", true, booktablemodel, rownum); this.RefreshTable (); }}} public void refreshTable () {booktableModel Searchbook; tente {searchbook = new booktableModel ("selecione * de book_info"); bookTable.setModel (livro de pesquisa); booktableModel = Searchbook; } catch (sqLexception e1) {// TODO BLOCO DE CAPAGEM AUTOGERATION E1.PRINTSTACKTRACE (); }}} Booktablemodel.java
Pacote LibrarySystem; importar java.sql.*; importar java.util.*; /** Modelo de tabela de livros**/ importar javax.swing.table.*; @Suppresswarnings ("serial") classe pública booktablemodel estende abstratetablemodel {// elementos da tabela vetor privado <vetor <string>> rowdata; Vector privado <String> Colname; // banco de dados Private PreparedStatement STMT; Resultado de resultado privado; public booktableModel (string sql) lança sqlexception {this.initdata (sql); } public bookTableModel () lança sqLexception {this.initdata ("selecione * de book_info"); } public void initData (string sql) lança sqlexception {setRowData (novo vetor <vetor <string>> ()); setColName (novo vetor <String> ()); getColName (). Add ("No. no livro"); getColName (). Add ("Título do livro"); getColName (). Add ("Título do livro"); getColName (). Add ("Autor"); getColName (). Add ("Publisher"); getColName (). Add ("Time de publicação"); getColName (). Add ("Price"); / * * Banco de dados import * */ try {class.ForName ("com.mysql.jdbc.driver"); } catch (classNotFoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } String url = "jdbc: mysql: // localhost: 3306/dispositivo"; String user = "root"; String senha = "ZJQ1314520"; Conexão con = driverManager.getConnection (URL, usuário, senha); stmt = con.preparestatement (sql); resultado = stmt.executeQuery (); importaSSQL (); } void importSql () lança SQLEXCECCIONE {// TODO Método Gerado Auto-Gerado Stob @suppresswarnings ("UNUSUSTION") boolean SignNull = true; while (resultado.Next ()) {vetor <string> item = new Vector <string> (); for (int i = 1; i <7; i ++) {item.add (resultado.getString (i)); } getRowData (). add (item); SignNull = false; } resultado.close (); } @Override public int getColumnCount () {// Obtenha o número de colunas // TODO Method Auto-Gerated Stub Return this.colname.size (); } @Override public int getRowCount () {// Obtenha o número de linhas // TODO Method Auto-Gerated Stub Return this.rowdata.size (); } @Override public int getRowCount () {// Obtenha o número de linhas // TODO Method Auto-Gerated Stub Return this.rowdata.size (); } @Override Public Object getValuEat (int linha, int col) {// Obtenha dados de uma linha e uma coluna // TODO GEERATEADO AUTOMETADO Método Return (this.rowdata.get (linha)). Get (col); } @Override public string getColumnName (int column) {// TODO Método Auto-Gerado Stub Return this.colname.get (colun); } public vetor <vetor <string>> getRowData () {return rowdata; } public void setRowData (vetor <vetor <string>> rowdata) {this.rowdata = rowdata; } public vetor <string> getColname () {return colname; } public void setColname (vetor <string> colname) {this.colname = colname; } public void addbook (string sql) {try {stmt.executeUpdate (sql); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } // initdata ("selecione * de book_info"); } public void Deletebook (String sql) {try {stmt.executeUpdate (sql); } catch (sqLexception e1) {// TODO BLOCO DE CAPAGEM AUTOGERATO E1.PRINTSTACKTRACE (); }}} Addbookdialog.java
Pacote LibrarySystem; importar java.awt.*; importar java.awt.event.*; importar java.sql.sqLexception; importar javax.swing.*; @Suppresswarnings ("serial") public classe addbookdialog estende o jdialog implementa o actionlistener {private jlabel booknumlabel; Private Jlabel Booknamelabel; Private Jlabel BookWriterLabel; Private Jlabel Bookpublishlabel; Private Jlabel Bookpricelabel; Private Jlabel Booktimelabel; Private JTextField BookNumText; Private JTextfield booknametext; Private JTextField BookWriterText; Private JTextfield BookPublishText; Private JTextField BookPriCetext; Private JTextField BookTimeText; JButton privado submetbut; JButton particular cancelbut; public addbookdialog (proprietário do quadro, título da string, modelo booleano) {// A janela pai, nome da janela, é uma janela de modo (proprietário, título, modelo); booknumlabel = new Jlabel ("Número do livro:"); booknamelabel = new Jlabel ("Título do livro:"); bookWriterLabel = new Jlabel ("Autor:"); bookpublishlabel = new jlabel ("editor:"); bookpricelabel = new Jlabel ("Price:"); booktimeLabel = new Jlabel ("Time de publicação:"); bookNumText = new JTextfield (10); booknineText = novo JTextfield (10); bookWriterText = new JTextfield (10); bookpublishText = new JTextfield (10); bookPriCetext = new JTextfield (10); booktimeText = new JTextfield (9); submitbut = new jbutton ("cancel"); cancelbut = new jbutton ("cancel"); submitbut.addactionListener (isto); cancelbut.addactionListener (this); this.setbounds (350.150.400.260); this.setResizable (false); this.setLayout (new BorderLayout ()); initlayout (); } public void initlayout () {container [] con1 = novo contêiner [6]; for (int i = 0; i <6; i ++) con1 [i] = new container (); con1 [0] .SetLayout (new FlowLayout ()); con1 [0] .add (booknumlabel); con1 [0] .add (booknumText); con1 [1] .SetLayout (new FlowLayout ()); con1 [1] .Add (booknamelabel); CON1 [1] .Add (booknameText); con1 [2] .SetLayout (new FlowLayout ()); CON1 [2] .Add (BookWriterLabel); CON1 [2] .Add (bookWriterText); con1 [3] .SetLayout (new FlowLayout ()); CON1 [3] .Add (bookpublishlabel); CON1 [3] .Add (bookpublishText); con1 [4] .SetLayout (new FlowLayout ()); con1 [4] .Add (bookpricelabel); CON1 [4] .Add (BookPriCetext); con1 [5] .SetLayout (new FlowLayout ()); con1 [5] .Add (booktimelabel); con1 [5] .Add (booktimeText); Contêiner con2 = new container (); CON2.SETLAYOUT (new BorderLayout ()); con2.add (con1 [0], borderlayout.north); CON2.Add (con1 [1], borderlayout.center); CON2.Add (con1 [2], borderlayout.south); Contêiner con3 = new container (); CON3.SETLAYOUT (new BorderLayout ()); CON3.Add (CON1 [3], borderlayout.north); CON3.Add (CON1 [4], borderlayout.center); CON3.Add (CON1 [5], BorderLayout.South); Contêiner con4 = new container (); CON4.setLayout (new FlowLayout ()); CON4.Add (Submitbut); con4.add (cancelbut); Contêiner con5 = new container (); CON5.SETLAYOUT (new BorderLayout ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (con4, borderlayout.south); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } @Override public void ActionPerformed (ActionEvent E) {// TODO Método Gerado automaticamente Stub if (e.getSource () == submitbut) {if (bookNumText.getText (). bookPriCetext.getText (). Equals ("") ||. JoptionPane.showMessagedialog (isto, "entrada não pode estar vazia", "Prompt", JoptionPane.Plain_Message); } else {//system.out.println("Input bem -sucedido "); String sql = "inserir em" + "book_info (book_num, book_name, book_writer, publish_house, book_price, publish_time)" + "valores ('"+bookNumText.getText ()+"', '"+booknameText.getText ()+"', '"+bookwriterText.getText ()+"', '"+bookPublishText.getText ()+",'"+bookPriTextText.TetText ()+" BookTableModel Book = Novo BookTableModel (); } if (e.getsource () == cancelbut) {this.setVisible (false); Modifybook.java
Pacote LibrarySystem; importar java.awt.*; importar java.awt.event.*; importar java.sql.sqLexception; importar javax.swing.*; @Suppresswarnings ("serial") Classe pública ModifyBook Extende JDialog implementa ActionListener {private jlabel booknumlabel; Private Jlabel Booknamelabel; Private Jlabel BookWriterLabel; Private Jlabel Bookpublishlabel; Private Jlabel Bookpricelabel; Private Jlabel Booktimelabel; Private JTextField BookNumText; Private JTextfield booknametext; Private JTextField BookWriterText; Private JTextfield BookPublishText; Private JTextField BookPriCetext; Private JTextField BookTimeText; JButton privado submetbut; JButton particular cancelbut; BooktableModel Bookmodel particular; privado int rownum; public ModifyBook (proprietário do quadro, título da string, tipo booleano, modelo booktableModel, int linha) {super (proprietário, título, tipo); bookmodel = modelo; ROWNUM = ROW; booknumlabel = new Jlabel ("Número do livro:"); booknamelabel = new Jlabel ("Título do livro:"); bookWriterLabel = new Jlabel ("Autor:"); bookpublishlabel = new jlabel ("editor:"); bookpricelabel = new Jlabel ("Price:"); booktimeLabel = new Jlabel ("Time de publicação:"); bookNumText = new JTextfield (10); booknineText = novo JTextfield (10); bookWriterText = new JTextfield (10); bookpublishText = new JTextfield (10); bookPriCetext = new JTextfield (10); booktimeText = new JTextfield (9); submmitbut = new jbutton ("Confirmar modificação"); cancelbut = new jbutton ("cancel"); submitbut.addactionListener (isto); cancelbut.addactionListener (this); this.setbounds (350.150.400.260); this.setResizable (false); this.setLayout (new BorderLayout ()); this.setValue (); this.initlayout (); } public void initlayout () {container [] con1 = novo contêiner [6]; for (int i = 0; i <6; i ++) con1 [i] = new container (); con1 [0] .SetLayout (new FlowLayout ()); con1 [0] .add (booknumlabel); con1 [0] .add (booknumText); con1 [1] .SetLayout (new FlowLayout ()); con1 [1] .Add (booknamelabel); CON1 [1] .Add (booknameText); con1 [2] .SetLayout (new FlowLayout ()); CON1 [2] .Add (BookWriterLabel); CON1 [2] .Add (bookWriterText); con1 [3] .SetLayout (new FlowLayout ()); CON1 [3] .Add (bookpublishlabel); CON1 [3] .Add (bookpublishText); con1 [4] .SetLayout (new FlowLayout ()); con1 [4] .Add (bookpricelabel); CON1 [4] .Add (BookPriCetext); con1 [5] .SetLayout (new FlowLayout ()); con1 [5] .Add (booktimelabel); con1 [5] .Add (booktimeText); Contêiner con2 = new container (); CON2.SETLAYOUT (new BorderLayout ()); con2.add (con1 [0], borderlayout.north); CON2.Add (con1 [1], borderlayout.center); CON2.Add (con1 [2], borderlayout.south); Contêiner con3 = new container (); CON3.SETLAYOUT (new BorderLayout ()); CON3.Add (CON1 [3], BorderLayout.North); CON3.Add (CON1 [4], borderlayout.center); CON3.Add (CON1 [5], BorderLayout.South); Contêiner con4 = new container (); CON4.setLayout (new FlowLayout ()); CON4.Add (Submitbut); con4.add (cancelbut); Contêiner con5 = new container (); CON5.SETLAYOUT (new BorderLayout ()); con5.add (con2, borderlayout.north); con5.add (con3, borderlayout.center); con5.add (con4, borderlayout.south); this.add (con5, borderlayout.center); this.validate (); this.setVisible (true); } public void setValue () {this.booknumText.settext ((string) bookmodel.getValuEat (rownum, 0)); this.BookNumText.SetEditable (false); this.booknametext.settext ((string) bookmodel.getvalueat (rownum, 1)); this.BookWriterText.Settext ((String) bookmodel.getValuEat (rownum, 2)); this.bookpublishtext.settext ((string) bookmodel.getvalueat (rownum, 3)); this.booktimeText.settext ((string) bookmodel.getValuEat (rownum, 4)); this.bookPriCetext.Settext ((String) bookmodel.getValuEat (rownum, 5)); this.validate (); } @Override public void ActionPerformed (ActionEvent E) {// System.out.println (bookPriCeTxt.getText ()); // TODO Método gerado automaticamente stub if (e.getSource () == submitbut) {if (bookNumText.getText (). Equals ("") || booknineText.getText (). Equals ("") || bookpublishtext.getText (). Equals ("") ||. "Confirmar a caixa de modificação", joptionpane.yes_no_option); '"+bookWriterText.getText ()+"', publish_house = '"+bookpublishText.getText ()+"', book_price = '"+bookPriceText.getText ()+"', publish_time = '"+booktimeTextText ()+"' '() " Booktablemodel book = novo booktableModel (); } JoptionPane.showMessagedialog (isto, "Modificação foi bem -sucedida", "Prompt", JoptionPane.Plain_Message); this.setVisible (false); } else if (n == joptionpane.no_option) {return; }}} if (e.getSource () == cancelbut) {this.setVisible (false); }}}} Resultados em execução do programa:
Interface principal:
Interface de consulta:
Adicione uma interface do livro:
Modifique a interface:
Excluir operação:
Interface do banco de dados:
Para obter mais informações sobre o sistema de gerenciamento, clique em "Tópico especial do sistema de gerenciamento" para aprender
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.