Using the Insert statement in a Java program without hardcoding the data

hello.

this is james mcfadden. i have developed a program called Demo.java, which is used with another program called QueryTableModel.java (a program that allows data to be viewed in a JTable). The Demo.java program displays a menu, connects to a database, allows the user to add data into the database and allows the user to view data that is already in the database. I have a problem with the Demo.java program. I have hardcoded the Insert statement in it. How do you use the Insert statement to put data into a database without hardcoding the data?

import java.awt.*;//Contains all of the classes for creating user interfaces and for painting graphics and images

import java.awt.event.*;//Provides interfaces and classes for dealing with different types of events fired by AWT components

import javax.swing.*;//Provides a set of lightweight components that, to the maximum degree possible, work the same on all platforms

import javax.swing.table.*;//Provides classes and interfaces for dealing with javax.swing.JTable

import javax.swing.JOptionPane;//provides a class that makes it easy to pop up a standard dialog box that prompts users for a value or informs them of something

import java.sql.*;//Provides the API for accessing and processing data stored in a data source using the Java programming language

publicclass Demoextends JFrame{

static String url ="jdbc:odbc:VideoLibrary";//a static variable that allows a connection to be made to a database called VideoLibrary

static Statement stmt;//a static variable that allows a statement to be made once a connection is set up

static Connection con;//a static interface that allows a connection to be made to a database

//global variables

JTextField hostField;//a class that allows a line of text to be changed

JTextField queryField;//a class that allows a line of text to be changed

QueryTableModel qtm;//a class that shows and changes regular two-dimensional tables of cells

JComboBox comboBox;//a class that puts a button or editable field and a drop-down list together

publicstaticvoid main(String args[]){

int choice=-1;//a variable of type int that is set to -1

do{

choice=getChoice();//invokes the method getChoice()

if(choice!=0){

getSelected(choice);//invokes the method getSelected(choice)

}//end if

//if the user chooses 5, it will cause him or her to exit the system

}while(choice!=5);//end do-while

System.exit(0);//closes down the menu screen

}//end main

publicstaticint getChoice(){

String choice;//a variable of type string

int ch;//a variable of type int

choice = JOptionPane.showInputDialog(null,"1. Maintain product details\n"+"2. Maintain member details\n"+"3. Maintain rental details\n"+"4. View product, member and rental details\n"+"5. Log Off\n\n"+"Enter your choice");//asks the user for some input

ch = Integer.parseInt(choice);//a class that wraps a value of the primitive type int in an object

return ch;//a method that returns an integer value

}//end getChoice

publicstaticvoid getSelected(int choice){

if(choice==1){

maintainProductDetails();//invokes the method maintainProductDetails()

}//end if

if(choice==2){

maintainMemberDetails();//invokes the method maintainMemberDetails()

}//end if

if(choice==3){

maintainRentalDetails();//invokes the method maintainRentalDetails()

}//end if

if(choice==4){

Demo test =new Demo();//invokes the constructor Demo()

test.setVisible(true);//shows the JTable component by marking it as visible

}//end if

}//end getSelected

publicstatic Connection getConnection(){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//used to create a JDBC connection using a database

}//end try

catch(java.lang.ClassNotFoundException e){//causes an exception to be thrown when an application tries to load in a class through its string name

System.err.print("ClassNotFoundException: ");//displays an error message

System.err.println(e.getMessage());//returns the exception that was raised if an error occurred while attempting to load the ClassNotFoundException class

}//end catch

try{

con=DriverManager.getConnection(url,"","");//tries to create a connection with the database using the DriverManager class

}//end try

catch(SQLException ex){

System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message

}//end catch

return con;

}//end getConnection

publicstaticvoid maintainProductDetails(){

Connection con = getConnection();//creates a connection with the database

String addProduct1, addProduct2, addProduct3, addProduct4, addProduct5, addProduct6, addProduct7, addProduct8, addProduct9, addProduct10;//string variables that represent information about the different types of product data that will be stored in the database

addProduct1 ="insert into Product values (110001, 'The Killers - Sams Town', 5.00, 'G', 'CD', 2006)";

addProduct2 ="insert into Product values (110002, 'Robbie Williams - Rudebox', 5.00, 'G', 'CD', 2006)";

addProduct3 ="insert into Product values (110003, 'Razorlight - Razorlight', 5.00, 'G', 'CD', 2006)";

addProduct4 ="insert into Product values (110004, 'My Chemical Romance - The Black Parade', 5.00, 'G', 'CD', 2006)";

addProduct5 ="insert into Product values (110005, 'Snow Patrol - Eyes Open', 5.00, 'G', 'CD', 2006)";

addProduct6 ="insert into Product values (110006, 'Scissor Sisters - Ta-Dah!', 5.00, 'G', 'CD', 2006)";

addProduct7 ="insert into Product values (110007, 'Lovesounds - Justin Timberlake', 5.00, 'G', 'CD', 2006)";

addProduct8 ="insert into Product values (110008, 'Director - We thrive on big cities', 5.00, 'G', 'CD', 2006)";

addProduct9 ="insert into Product values (110009, 'Roxette - Roxette hits', 5.00, 'G', 'CD', 2006)";

addProduct10 ="insert into Product values (110010, 'Pussy Cat Dolls - PCD', 5.00, 'G', 'CD', 2006)";

try{

stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database

//statements are allowed to be made once a connection is set up

stmt.executeUpdate(addProduct1);

stmt.executeUpdate(addProduct2);

stmt.executeUpdate(addProduct3);

stmt.executeUpdate(addProduct4);

stmt.executeUpdate(addProduct5);

stmt.executeUpdate(addProduct6);

stmt.executeUpdate(addProduct7);

stmt.executeUpdate(addProduct8);

stmt.executeUpdate(addProduct9);

stmt.executeUpdate(addProduct10);

stmt.close();//closes the Statement object

con.close();//terminates the connection with the database

}//end try

catch(SQLException ex){

System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message

}//end catch

}//end maintainProductDetails

publicstaticvoid maintainMemberDetails(){

Connection con = getConnection();//creates a connection with the database

String addMember1, addMember2, addMember3, addMember4, addMember5, addMember6, addMember7, addMember8, addMember9, addMember10;//string variables that represent information about the member data that will be stored in the database

addMember1 ="insert into Member values (1234, 'Ann', 'Smyth', 'Upper Killult, Falcarragh, Co. Donegal', '(074)-9135210', '(087)-2030172', #5/11/85#, #5/12/06#)";

addMember2 ="insert into Member values (2345, 'John', 'Murphy', 'Lower Killult, Falcarragh, Co. Donegal', '(074)-9135211', '(087)-2030173', #4/12/85#, #6/13/06#)";

addMember3 ="insert into Member values (1324, 'James', 'McFadden', 'Lower Ardsbeg, Gortahork, Co. Donegal', '(074)-9165314', '(087)-2030171', #4/11/85#, #6/14/06#)";

addMember4 ="insert into Member values (1235, 'Frankie', 'Ferry', 'Ardsmore, Gortahork, Co. Donegal', '(074)-9165325', '(087)-2031234', #6/13/60#, #6/15/06#)";

addMember5 ="insert into Member values (1236, 'Daniel', 'McKimm', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135212', '(087)-2030184', #5/14/73#, #6/16/06#)";

addMember6 ="insert into Member values (2346, 'Stephen', 'Doohan', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135213', '(087)-2030185', #6/13/85#, #5/13/06#)";

addMember7 ="insert into Member values (2347, 'James', 'Ferry', 'Meenlaragh, Gortahork, Co.Donegal', '(074)-9165360', '(087)-2031345', #9/12/85#, #5/14/06#)";

addMember8 ="insert into Member values (2348, 'Liam', 'Cannon', 'Derryconner, Gortahork, Co.Donegal', '(074)-9165324', '(087)-2031456', #4/11/86#, #5/15/06#)";

addMember9 ="insert into Member values (2401, 'Ciaran', 'Ferry', 'Brinalack, Gweedore, Co.Donegal', '(074)-9176425', '(087)-2030282', #9/12/85#, #5/16/06#)";

addMember10 ="insert into Member values (2402, 'Ciaran', 'McGee', 'Derrybeg, Gweedore, Co.Donegal', '(074)-9176536', '(087)-2030393', #9/14/85#, #5/18/06#)";

try{

stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database

//statements are allowed to be made once a connection is set up

stmt.executeUpdate(addMember1);

stmt.executeUpdate(addMember2);

stmt.executeUpdate(addMember3);

stmt.executeUpdate(addMember4);

stmt.executeUpdate(addMember5);

stmt.executeUpdate(addMember6);

stmt.executeUpdate(addMember7);

stmt.executeUpdate(addMember8);

stmt.executeUpdate(addMember9);

stmt.executeUpdate(addMember10);

stmt.close();//closes the Statement object

con.close();//terminates the connection with the database

}//end try

catch(SQLException ex){

System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message

}//end catch

}//end maintainMemberDetails

publicstaticvoid maintainRentalDetails(){

Connection con = getConnection();//creates a connection with the database

String addRental1, addRental2, addRental3, addRental4, addRental5, addRental6, addRental7, addRental8, addRental9, addRental10;//string variables that represent information about the loan data that will be stored in the database

addRental1 ="insert into Rental values (110001, 'The Killers - Sams Town', 1234, 'Ann', 'Smyth', #9/01/06#, #9/10/06#, 'Yes', 2.00)";

addRental2 ="insert into Rental values (120001, 'Mission Impossible 3', 2345, 'John', 'Murphy', #9/02/06#, #9/09/06#, 'No', 0.00)";

addRental3 ="insert into Rental values (130001, 'Need for Special Carbon', 1324, 'James', 'McFadden', #9/03/06#, #9/12/06#, 'Yes', 2.00)";

addRental4 ="insert into Rental values (110002, 'Robbie Williams - Rudebox', 1235, 'Frankie', 'Ferry', #9/04/06#, #9/11/06#, 'No', 0.00)";

addRental5 ="insert into Rental values (120015, 'Prime', 1236, 'Daniel', 'McKimm', #9/05/06#, #9/14/06#, 'Yes', 2.00)";

addRental6 ="insert into Rental values (130015, 'FIFA 07', 2346, 'Stephen', 'Doohan', #9/06/06#, #9/13/06#, 'No', 0.00)";

addRental7 ="insert into Rental values (110009, 'Roxette - Roxette hits', 2347, 'James', 'Ferry', #9/07/06#, #9/16/06#, 'Yes', 2.00)";

addRental8 ="insert into Rental values (120003, 'The Break Up', 2348, 'Liam', 'Cannon', #9/08/06#, #9/15/06#, 'No', 0.00)";

addRental9 ="insert into Rental values (130027, 'Gears of War', 2401, 'Ciaran', 'Ferry', #9/09/06#, #9/18/06#, 'Yes', 2.00)";

addRental10 ="insert into Rental values (110021, 'Scooter - Mind the Gap', 2402, 'Ciaran', 'McGee', #9/10/06#, #9/17/06#, 'No', 0.00)";

try{

stmt = con.createStatement();//Creates a Statement object for sending SQL statements to the database

//statements are allowed to be made once a connection is set up

stmt.executeUpdate(addRental1);

stmt.executeUpdate(addRental2);

stmt.executeUpdate(addRental3);

stmt.executeUpdate(addRental4);

stmt.executeUpdate(addRental5);

stmt.executeUpdate(addRental6);

stmt.executeUpdate(addRental7);

stmt.executeUpdate(addRental8);

stmt.executeUpdate(addRental9);

stmt.executeUpdate(addRental10);

stmt.close();//closes the Statement object

con.close();//terminates the connection with the database

}//end try

catch(SQLException ex){

System.err.println("SQLException: " + ex.getMessage());//returns an SQL error message

}//end catch

}//end maintainRentalDetails

public Demo(){//a constructor

super("Demo Test Frame");//overrides the constructor

setSize(350, 200);//Resizes this component so that it has width of 350 and height of 200

comboBox =new JComboBox();//invokes the class JComboBox

comboBox.addItem("jdbc:odbc:VideoLibrary");//adds the specified item to the end of the scrolling list

qtm =new QueryTableModel();//invokes the class QueryTableModel

JTable table =new JTable(qtm);//a class that shows and changes regular two-dimensional tables of cells

JScrollPane scrollpane =new JScrollPane(table);//a class that provides a scrollable view of a lightweight component

JPanel p1 =new JPanel();//a class that puts the combo box and query field in a panel

p1.setLayout(new GridLayout(3, 2));//Sets the layout manager for this container

p1.add(comboBox);//Appends the specified component to the end of this container

p1.add(new JLabel("Enter your query: "));//Appends the specified component to the end of this container

p1.add(queryField =new JTextField());//Appends the specified component to the end of this container

p1.add(new JLabel("Click here to send: "));//Appends the specified component to the end of this container

JButton jb =new JButton("Search");//a class that is an implementation of a "push" button

jb.addActionListener(new ActionListener(){//Adds an ActionListener to the button

publicvoid actionPerformed(ActionEvent e){

qtm.setHostURL();//invokes the method setHostURL

qtm.setQuery(queryField.getText().trim());//invokes the method setQuery; and returns the text that is presented by this text component and returns a copy of the string, with leading and trailing whitespaces omitted

}

} );//end addActionListener

p1.add(jb);//Appends the specified component to the end of this container

getContentPane().add(p1, BorderLayout.NORTH);//Returns the content pane

getContentPane().add(scrollpane, BorderLayout.CENTER);//Returns the content pane

}//end Demo

}//end class Demo

import java.sql.*;//Provides the API for accessing and processing data stored in a data source using the Java programming language

import java.io.*;//Provides for system input and output through data streams, serialization and the file system

import java.util.Vector;//provides a class that implements a growable array of objects

import javax.swing.*;//Provides a set of lightweight components that, to the maximum degree possible, work the same on all platforms

import javax.swing.table.*;//Provides classes and interfaces for dealing with javax.swing.JTable

publicclass QueryTableModelextends AbstractTableModel{

Vector cache;//a class that constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero

int colCount;//a variable that counts the number of columns in the three tables

String[] headers;//a class that represents character strings and all string literals in this program are implemented as instances of the String class

Connection db;//an interface that allows a connection to be made to a database

Statement statement;//an interface that allows executes the given SQL statement, which returns a single ResultSet object

String currentURL;//a variable that allows the URL to be displayed in a combo box

public QueryTableModel(){//a constructor

cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//used by opening a JDBC connection using an URL

}//end try

catch(Exception e){

System.out.println("problem loading the driver ");//an error message

}//end catch

}//end QueryTableModel

public String getColumnName(int i){//Returns the designated column's name

return headers[i];//returns the name of each column in the three table

}//end getColumnName

publicint getColumnCount(){//Returns the number of columns in the column model

return colCount;//returns the number of columns in the three tables

}//end getColumnCount

publicint getRowCount(){//Returns the number of rows in this table's model

return cache.size();//returns the number of components in the vector

}//end getRowCount

public Object getValueAt(int row,int col){//Returns the cell value at row and column

return ((String[])cache.elementAt(row))[col];//Returns the component at the specified index

}//end getValueAt

publicvoid setHostURL(){//sets the URL for the database

String url ="jdbc:odbc:VideoLibrary";//a variable that allows a connection to be made to a database called VideoLibrary

closeDB();//invokes the method closeDB()

try{

db=DriverManager.getConnection(url,"","");//tries to create a connection with the database using the DriverManager class

statement=db.createStatement();//Creates a Statement object for sending SQL statements to the database

}//end try

catch(Exception e){

System.out.println("Could not initialize the database.");//an error message

e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream

}//end catch

}//end setHostURL

publicvoid setQuery(String q){//sets the kind of query that is to be sent to the database

cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero

String s="select * from Product";//a variable that causes all the data that is in the product table to be displayed in a JTable, which also means that all the data that is in both the member and rental tables can also be displayed in a JTable

try{

ResultSet rs=statement.executeQuery(q);//an interface that is used to generate a database result set by executing a statement that queries the database

ResultSetMetaData meta=rs.getMetaData();//an interface that is used to get information about the types and properties of the columns in a ResultSet object

colCount=meta.getColumnCount();//Returns the number of columns in this ResultSet object

headers=new String[colCount];//gets the name of each column in the three tables

for(int h=1;h<=colCount;h++){

headers[h-1]=meta.getColumnName(h);//Get the designated column's name

}//end for

while(rs.next()){

String[] record=new String[colCount];//stores the name of each column in the three tables in memory

for(int i=0;i<colCount;i++){

record[i]=rs.getString(i+1);//Retrieves the value of the designated column in the current row of this ResultSet object as a String

}//end for

cache.addElement(record);//Adds the specified component to the end of this vector, increasing its size by one

}//end while

fireTableChanged(null);//Forwards the given notification event to all TableModelListeners that registered themselves as listeners for this table model

}//end try

catch(Exception e){

cache=new Vector();//constructs an empty vector so that its internal data array has size 10 and its standard capacity increment is zero

e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream

}//end catch

}//end setQuery

publicvoid initDB(String url){

try{

db=DriverManager.getConnection(url);//tries to create a connection with the database using the DriverManager class

statement=db.createStatement();//Creates a Statement object for sending SQL statements to the database

}//end try

catch(Exception e){

System.out.println("Could not initialize the database.");//an error message

e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream

}//end catch

}//end initDB

publicvoid closeDB(){

try{

if(statement!=null){

statement.close();//Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed

}//end if

if(db!=null){

db.close();//Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released

}//end if

}//end try

catch(Exception e){

System.out.println("Could not close the current connection.");//an error message

e.printStackTrace();//a Throwable method that prints this throwable and it's backtrace to the standard error stream

}//end catch

}//end closeDB

}//end class QueryTableModel

>

[35813 byte] By [james-mcfaddena] at [2007-11-26 21:53:05]
# 1
This is unbelievable: due to the over-use of comments your code is unreadable!Message was edited by: prometheuzzI mean, how should this this clarify anything:getSelected(choice);//invokes the method getSelected(choice) ?
prometheuzza at 2007-7-10 3:47:18 > top of Java-index,Java Essentials,Java Programming...
# 2
Also one word: arrays.
-Kayaman-a at 2007-7-10 3:47:18 > top of Java-index,Java Essentials,Java Programming...
# 3
properties file, ibatis, spring, hibernate to hold the sqls?
mchan0a at 2007-7-10 3:47:18 > top of Java-index,Java Essentials,Java Programming...
# 4

here's an uncommented version of the code.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.table.*;

import javax.swing.JOptionPane;

import java.sql.*;

public class Demo extends JFrame{

static String url = "jdbc:odbc:VideoLibrary";

static Statement stmt;

static Connection con;

JTextField hostField;

JTextField queryField;

QueryTableModel qtm;

JComboBox comboBox;

public static void main(String args[]){

int choice=-1;

do{

choice=getChoice();

if(choice!=0){

getSelected(choice);

}

}while(choice!=5);

System.exit(0);

}

public static int getChoice(){

String choice;

int ch;

choice = JOptionPane.showInputDialog(null,"1. Maintain product details\n"+"2. Maintain member details\n"+"3. Maintain rental details\n"+"4. View product, member and rental details\n"+"5. Log Off\n\n"+"Enter your choice");

ch = Integer.parseInt(choice);

return ch;

}

public static void getSelected(int choice){

if(choice==1){

maintainProductDetails();

}

if(choice==2){

maintainMemberDetails();

}

if(choice==3){

maintainRentalDetails();

}

if(choice==4){

Demo test = new Demo();

test.setVisible(true);

}

}

public static Connection getConnection(){

try {

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(java.lang.ClassNotFoundException e){

System.err.print("ClassNotFoundException: ");

System.err.println(e.getMessage());

}

try {

con=DriverManager.getConnection(url,"","");

}

catch(SQLException ex) {

System.err.println("SQLException: " + ex.getMessage());

}

return con;

}

public static void maintainProductDetails(){

Connection con = getConnection();

String addProduct1, addProduct2, addProduct3, addProduct4, addProduct5, addProduct6, addProduct7, addProduct8, addProduct9, addProduct10;

addProduct1 = "insert into Product values (110001, 'The Killers - Sams Town', 5.00, 'G', 'CD', 2006)";

addProduct2 = "insert into Product values (110002, 'Robbie Williams - Rudebox', 5.00, 'G', 'CD', 2006)";

addProduct3 = "insert into Product values (110003, 'Razorlight - Razorlight', 5.00, 'G', 'CD', 2006)";

addProduct4 = "insert into Product values (110004, 'My Chemical Romance - The Black Parade', 5.00, 'G', 'CD', 2006)";

addProduct5 = "insert into Product values (110005, 'Snow Patrol - Eyes Open', 5.00, 'G', 'CD', 2006)";

addProduct6 = "insert into Product values (110006, 'Scissor Sisters - Ta-Dah!', 5.00, 'G', 'CD', 2006)";

addProduct7 = "insert into Product values (110007, 'Lovesounds - Justin Timberlake', 5.00, 'G', 'CD', 2006)";

addProduct8 = "insert into Product values (110008, 'Director - We thrive on big cities', 5.00, 'G', 'CD', 2006)";

addProduct9 = "insert into Product values (110009, 'Roxette - Roxette hits', 5.00, 'G', 'CD', 2006)";

addProduct10 = "insert into Product values (110010, '***** Cat Dolls - PCD', 5.00, 'G', 'CD', 2006)";

try {

stmt = con.createStatement();

stmt.executeUpdate(addProduct1);

stmt.executeUpdate(addProduct2);

stmt.executeUpdate(addProduct3);

stmt.executeUpdate(addProduct4);

stmt.executeUpdate(addProduct5);

stmt.executeUpdate(addProduct6);

stmt.executeUpdate(addProduct7);

stmt.executeUpdate(addProduct8);

stmt.executeUpdate(addProduct9);

stmt.executeUpdate(addProduct10);

stmt.close();

con.close();

}

catch(SQLException ex) {

System.err.println("SQLException: " + ex.getMessage());

}

}

public static void maintainMemberDetails(){

Connection con = getConnection();

String addMember1, addMember2, addMember3, addMember4, addMember5, addMember6, addMember7, addMember8, addMember9, addMember10;

addMember1 = "insert into Member values (1234, 'Ann', 'Smyth', 'Upper Killult, Falcarragh, Co. Donegal', '(074)-9135210', '(087)-2030172', #5/11/85#, #5/12/06#)";

addMember2 = "insert into Member values (2345, 'John', 'Murphy', 'Lower Killult, Falcarragh, Co. Donegal', '(074)-9135211', '(087)-2030173', #4/12/85#, #6/13/06#)";

addMember3 = "insert into Member values (1324, 'James', 'McFadden', 'Lower Ardsbeg, Gortahork, Co. Donegal', '(074)-9165314', '(087)-2030171', #4/11/85#, #6/14/06#)";

addMember4 = "insert into Member values (1235, 'Frankie', 'Ferry', 'Ardsmore, Gortahork, Co. Donegal', '(074)-9165325', '(087)-2031234', #6/13/60#, #6/15/06#)";

addMember5 = "insert into Member values (1236, 'Daniel', 'McKimm', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135212', '(087)-2030184', #5/14/73#, #6/16/06#)";

addMember6 = "insert into Member values (2346, 'Stephen', 'Doohan', 'Ballyness, Falcarragh, Co. Donegal', '(074)-9135213', '(087)-2030185', #6/13/85#, #5/13/06#)";

addMember7 = "insert into Member values (2347, 'James', 'Ferry', 'Meenlaragh, Gortahork, Co.Donegal', '(074)-9165360', '(087)-2031345', #9/12/85#, #5/14/06#)";

addMember8 = "insert into Member values (2348, 'Liam', 'Cannon', 'Derryconner, Gortahork, Co.Donegal', '(074)-9165324', '(087)-2031456', #4/11/86#, #5/15/06#)";

addMember9 = "insert into Member values (2401, 'Ciaran', 'Ferry', 'Brinalack, Gweedore, Co.Donegal', '(074)-9176425', '(087)-2030282', #9/12/85#, #5/16/06#)";

addMember10 = "insert into Member values (2402, 'Ciaran', 'McGee', 'Derrybeg, Gweedore, Co.Donegal', '(074)-9176536', '(087)-2030393', #9/14/85#, #5/18/06#)";

try{

stmt = con.createStatement();

stmt.executeUpdate(addMember1);

stmt.executeUpdate(addMember2);

stmt.executeUpdate(addMember3);

stmt.executeUpdate(addMember4);

stmt.executeUpdate(addMember5);

stmt.executeUpdate(addMember6);

stmt.executeUpdate(addMember7);

stmt.executeUpdate(addMember8);

stmt.executeUpdate(addMember9);

stmt.executeUpdate(addMember10);

stmt.close();

con.close();

}

catch(SQLException ex) {

System.err.println("SQLException: " + ex.getMessage());

}

}

public static void maintainRentalDetails(){

Connection con = getConnection();

String addRental1, addRental2, addRental3, addRental4, addRental5, addRental6, addRental7, addRental8, addRental9, addRental10;

addRental1 = "insert into Rental values (110001, 'The Killers - Sams Town', 1234, 'Ann', 'Smyth', #9/01/06#, #9/10/06#, 'Yes', 2.00)";

addRental2 = "insert into Rental values (120001, 'Mission Impossible 3', 2345, 'John', 'Murphy', #9/02/06#, #9/09/06#, 'No', 0.00)";

addRental3 = "insert into Rental values (130001, 'Need for Special Carbon', 1324, 'James', 'McFadden', #9/03/06#, #9/12/06#, 'Yes', 2.00)";

addRental4 = "insert into Rental values (110002, 'Robbie Williams - Rudebox', 1235, 'Frankie', 'Ferry', #9/04/06#, #9/11/06#, 'No', 0.00)";

addRental5 = "insert into Rental values (120015, 'Prime', 1236, 'Daniel', 'McKimm', #9/05/06#, #9/14/06#, 'Yes', 2.00)";

addRental6 = "insert into Rental values (130015, 'FIFA 07', 2346, 'Stephen', 'Doohan', #9/06/06#, #9/13/06#, 'No', 0.00)";

addRental7 = "insert into Rental values (110009, 'Roxette - Roxette hits', 2347, 'James', 'Ferry', #9/07/06#, #9/16/06#, 'Yes', 2.00)";

addRental8 = "insert into Rental values (120003, 'The Break Up', 2348, 'Liam', 'Cannon', #9/08/06#, #9/15/06#, 'No', 0.00)";

addRental9 = "insert into Rental values (130027, 'Gears of War', 2401, 'Ciaran', 'Ferry', #9/09/06#, #9/18/06#, 'Yes', 2.00)";

addRental10 = "insert into Rental values (110021, 'Scooter - Mind the Gap', 2402, 'Ciaran', 'McGee', #9/10/06#, #9/17/06#, 'No', 0.00)";

try{

stmt = con.createStatement();

stmt.executeUpdate(addRental1);

stmt.executeUpdate(addRental2);

stmt.executeUpdate(addRental3);

stmt.executeUpdate(addRental4);

stmt.executeUpdate(addRental5);

stmt.executeUpdate(addRental6);

stmt.executeUpdate(addRental7);

stmt.executeUpdate(addRental8);

stmt.executeUpdate(addRental9);

stmt.executeUpdate(addRental10);

stmt.close();

con.close();

}

catch(SQLException ex) {

System.err.println("SQLException: " + ex.getMessage());

}

}

public Demo(){

super("Demo Test Frame");

setSize(350, 200);

comboBox = new JComboBox();

comboBox.addItem("jdbc:odbc:VideoLibrary");

qtm = new QueryTableModel();

JTable table = new JTable(qtm);

JScrollPane scrollpane = new JScrollPane(table);

JPanel p1 = new JPanel();

p1.setLayout(new GridLayout(3, 2));

p1.add(comboBox);

p1.add(new JLabel("Enter your query: "));

p1.add(queryField = new JTextField());

p1.add(new JLabel("Click here to send: "));

JButton jb = new JButton("Search");

jb.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

qtm.setHostURL();

qtm.setQuery(queryField.getText().trim());

}

} );

p1.add(jb);

getContentPane().add(p1, BorderLayout.NORTH);

getContentPane().add(scrollpane, BorderLayout.CENTER);

}

}

import java.sql.*;

import java.io.*;

import java.util.Vector;

import javax.swing.*;

import javax.swing.table.*;

public class QueryTableModel extends AbstractTableModel{

Vector cache;

int colCount;

String[] headers;

Connection db;

Statement statement;

String currentURL;

public QueryTableModel(){

cache=new Vector();

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

}

catch(Exception e){

System.out.println("problem loading the driver ");

}

}

public String getColumnName(int i){

return headers[i];

}

public int getColumnCount(){

return colCount;

}

public int getRowCount(){

return cache.size();

}

public Object getValueAt(int row, int col){

return ((String[])cache.elementAt(row))[col];

}

public void setHostURL(){

String url = "jdbc:odbc:VideoLibrary";

closeDB();

try{

db=DriverManager.getConnection(url,"","");

statement=db.createStatement();

}

catch(Exception e){

System.out.println("Could not initialize the database.");

e.printStackTrace();

}

}

public void setQuery(String q){

cache=new Vector();

String s="select * from Product";

try{

ResultSet rs=statement.executeQuery(q);

ResultSetMetaData meta=rs.getMetaData();

colCount=meta.getColumnCount();

headers=new String[colCount];

for(int h=1;h<=colCount;h++){

headers[h-1]=meta.getColumnName(h);

}

while(rs.next()){

String[] record=new String[colCount];

for(int i=0;i<colCount;i++){

record[i]=rs.getString(i+1);

}

cache.addElement(record);

}

fireTableChanged(null);

}

catch(Exception e){

cache=new Vector();

e.printStackTrace();

}

}

public void initDB(String url){

try{

db=DriverManager.getConnection(url);

statement=db.createStatement();

}

catch(Exception e){

System.out.println("Could not initialize the database.");

e.printStackTrace();

}

}

public void closeDB(){

try{

if(statement!=null){

statement.close();

}

if(db!=null){

db.close();

}

}

catch(Exception e){

System.out.println("Could not close the current connection.");

e.printStackTrace();

}

}

}

>

james-mcfaddena at 2007-7-10 3:47:18 > top of Java-index,Java Essentials,Java Programming...
# 5
Do you know about java.sql.PreparedStatement? That will let you factor the data out of your SQL.In fact, I would recommend never using just Statementand always using PreparedStatement.
DrLaszloJamfa at 2007-7-10 3:47:18 > top of Java-index,Java Essentials,Java Programming...