JDBC insert statement problem
i have the following code. please help me out.
import java.io.*;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement ;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class BookIssue extends JFrame
JComboBox cbBooks;
JLabel lblIssue;
String selectedBook;
JButton btnIssue;
public BookIssue(String title)
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lblIssue = new JLabel("Select books from combo box",JLabel.CENTER);
btnIssue = new JButton("Issue");
cbBooks = new JComboBox(new Object[] {"RaghuRamkrishnan","J2CR","Netwrok Security"});
Container cp=getContentPane();
setLayout(new FlowLayout());
cp.add(lblIssue);
cp.add(cbBooks);
cp.add(btnIssue);
selectedBook =(String) (cbBooks.getSelectedItem());
btnIssue.addActionListener(new IssueListerner());
setSize(300,300);
setVisible(true);
}// constructor end
class IssueListerner implements ActionListener
Connection conn;
Statement stmt;
public void actionPerformed(ActionEvent ae)
try
if(btnIssue==ae.getSource())
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:JemNat","","");
stmt=conn.createStatement();
stmt.executeUpdate("Insert into StudentIssueDetails(BookName) values(selectedBook)");
}///End outer if
stmt.close();
conn.close();
} //end try
catch(SQLException exc)
exc.printStackTrace();
catch(Exception exc)
exc.printStackTrace();
} /// end function
public static void main(String[] args)
new BookIssue("Book Issue");
} ///end class
getting the following list of errors::
---------- java ----------
RaghuRamkrishnan
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at BookIssue$IssueListerner.actionPerformed(BookIssue.java:59)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
stmt.executeUpdate("Insert into
t into StudentIssueDetails(BookName)
values(selectedBook)");What is this 'selectedBook'? Is this a variable name?
In that case, you shouldn't be just writing it within the string. That would be an incorrect SQL. It should look like:
stmt.executeUpdate("Insert into StudentUssueDetails(BookName) values('" +selectedBook +"')");Of course, a better way is to use PreparedStatement.
Similar Messages
-
Mapping multi-segment IDOC to multiple JDBC INSERT statements
Hi Everyone,
This is probably going to be easy for the experienced PI developers out there but I'm just starting out in this technology. We are running PI 1.11 and the scenario is as follows. We have a bespoke IDOC message type ZSTOCK which can contain 1-many segments with the following field content:
WERKS
MATNR
VBELN
ACT_LABST
AVL_LABST
For each segment in the source IDOC, I want to generate an INSERT statement to insert a row in an SQL table via the JDBC adapter with the following columns:
Plant
Material
SalesOrd
ActStock
AvlStock
Basically, each field on the source IDOC segment maps directly onto the target column of the SQL table. The problem is, on a multi-segment IDOC only the first segment is generating a row in the SQL table. I've seen a number of threads on this forum that seem to tackle the same issue but the solution is either missing or unclear. I think the solution lies somwhere in the occurrences of the STATEMENT node in my target message type and perhaps specific definitions in the message mapping. Can anyone help solve this mystery?
Thanks,
GaryHi Gary
If you created a data type, try to change occurrence of STATEMENT node to 0..unbounded or 1..unbounded.
In the message mapping, map the target STATEMENT node with the source 1-many segment.
You can find [here|http://help.sap.com/saphelp_nw70/helpdata/en/4d/8c103e05df2e4b95cbcc68fed61705/content.htm] more informations about the JDBC structure
Regards,
Giuseppe -
need help urgently,am useing microsoft access as my database,whenever i try to insert data into the table i have in my database it tells me syntax error in INSERT INTO statement.please how do i overcome this problem.my code is below.thanks in advance.
'\n'
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class NewCustomerRecord extends JFrame{
private JTextField firstnameF,othernameF,phoneF,addressF,depositF,currentF,dateF;
private JButton registerbutton;
private Connection con;
private Statement st;
private ResultSet set;
private PreparedStatement stat;
public NewCustomerRecord(){
//super(f,"",true);
JPanel panel = new JPanel();
panel.setLayout(null);
JLabel firstL = new JLabel("First Name:");
firstL.setBounds(5,15,80,20);
panel.add(firstL);
firstnameF = new JTextField();
firstnameF.setBounds(70,15,100,20);
panel.add(firstnameF);
JLabel otherL = new JLabel("Other Names:");
otherL.setBounds(175,15,80,20);
panel.add(otherL);
othernameF = new JTextField();
othernameF.setBounds(255,15,100,20);
panel.add(othernameF);
JLabel phoneL = new JLabel("Phone No.:");
phoneL.setBounds(5,40,80,20);
panel.add(phoneL);
phoneF = new JTextField();
phoneF.setBounds(70,40,100,20);
panel.add(phoneF);
JLabel addressL = new JLabel("Address:");
addressL.setBounds(185,40,80,20);
panel.add(addressL);
addressF = new JTextField();
addressF.setBounds(255,40,100,20);
panel.add(addressF);
JLabel depositL = new JLabel("Deposit:");
depositL.setBounds(5,65,60,20);
panel.add(depositL);
depositF = new JTextField();
depositF.setBounds(70,65,100,20);
panel.add(depositF);
/*JLabel currentL = new JLabel("Current Bill:");
currentL.setBounds(135,65,80,20);
panel.add(currentL);
currentF = new JTextField();
currentF.setBounds(205,65,50,20);
panel.add(currentF);*/
JLabel dateL = new JLabel("Date:");
dateL.setBounds(185,65,50,20);
panel.add(dateL);
dateF = new JTextField();
dateF.setBounds(255,65,100,20);
panel.add(dateF);
registerbutton = new JButton("Register Customer");
registerbutton.setBounds(115,100,145,20);
registerbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
insertRecord();
dispose();
registerbutton.setMinimumSize(new Dimension(50,20));
panel.add(registerbutton);
add(panel);
setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
public void insertRecord(){
double bal=0.0;
String s=depositF.getText();
double dep = Double.parseDouble(s);
bal+=dep;
//String ss=dateF.getText();
//short dd=Short.parseShort(ss);
String ss=Double.toString(dep);
String bb=Double.toString(bal);
String fullName=firstnameF.getText()+"\t"+othernameF.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:sparkletransaction","","");
String insert="INSERT parsonaltransaction(date,name,phone,addres,deposit,balance)";
insert=insert+" VALUES(?,?,?,?,?,?)";
stat=con.prepareStatement(insert);
stat.setString(1,dateF.getText());
stat.setString(2,fullName);
stat.setString(3,phoneF.getText());
stat.setString(4,addressF.getText());
stat.setString(5,ss);
stat.setString(6,bb);
stat.executeUpdate();
stat.close();
catch(Exception e){
System.out.println(e);
public static void main(String[] arg){
new NewCustomerRecord().setVisible(true);
}try changing
"INSERT parsonaltransactionto
"INSERT INTO parsonaltransactionEdit: Also, should that really be parsonal, or maybe personal, or maybe even personnel? -
Hello everybody,
I have the next scenario:
R/3 IDOC -> XI -> Oracle JDBC Insertion
the problem is that the database is returning the reponse of the insertion and the idocs are asynchronous, so XI gives an error of mapping cause I can't map a synchronous interface to a asynchrounous one, can anyone help me with this problem any suggestions?????
Thanks in advance,
Regards,
Julio CesarHi,
If you want pass the data from IDOC to Oracle database to update the information of Oracle table,it is possible.
see this for sample weblog....
/people/prateek.shah/blog/2005/06/08/introduction-to-idoc-xi-file-scenario-and-complete-walk-through-for-starters
For target JDBC structure see the following weblog...
/people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30
and also refer
Re: IDOC to File Scenario
Thanks
Vikranth -
Nds Insert statement little problem
DB version XE 10g
Hello
I have little problem with my insert statement.
In my code, are many examples, but plz focus on V2 and V3 part.
As you can see V2 and V3 are not working
I get following errors
V2
Error report:
ORA-00984: column not allowed here
ORA-06512: AT line 28
00984. 00000 - "column not allowed here"
V3
Error report:
ORA-00917: missing comma
ORA-06512: AT line 33
00917. 00000 - "missing comma"
I really have no idea, why i'm getting these errors...
DROP TABLE FILMYARNOLD;
CREATE TABLE FILMYARNOLD
FIL_ID VARCHAR2 (329),
FIL_NAME VARCHAR2 (592),
FIL_YEAR VARCHAR2 (294),
FIL_ACTOR VARCHAR2 (392),
FIL_TEXTT VARCHAR2 (2596)
SET SERVEROUTPUT ON
DECLARE
TYPE FIL_TABLE IS TABLE OF VARCHAR2 (256);
vfilmiczki FIL_TABLE := fil_table();
statement VARCHAR2 (2048);
BEGIN
vfilmiczki.EXTEND;
vfilmiczki(1) := '77804';
vfilmiczki.EXTEND;
vfilmiczki(2) := 'Predator';
vfilmiczki.EXTEND;
vfilmiczki(3) := '1984';
vfilmiczki.EXTEND;
vfilmiczki(4) := 'Arnold';
vfilmiczki.EXTEND;
vfilmiczki(5) := 'get to the choppa';
/*statement := 'INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME, FIL_YEAR, FIL_ACTOR, FIL_TEXTT) VALUES ( ';
statement := statement|| '''chlip'',''lol'',''lol'',''chlip''';--
statement := statement||',''hmm'')';*/
-------V1------------working-----------------
--statement := 'INSERT INTO FILMYARNOLD (FIL_ID) VALUES ( ';
--statement := statement||vfilmiczki(1)||' )';
--EXECUTE IMMEDIATE statement;
--------V2-------------------- not working -----------------------------------------
--statement := 'INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME) VALUES ( ';
--statement := statement||vfilmiczki(1)||','||vfilmiczki(2)||' )';
--EXECUTE IMMEDIATE statement;
----V3------------ not working ------------
statement := 'INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME, FIL_YEAR, FIL_ACTOR, FIL_TEXTT) VALUES ( ';
statement := statement||vfilmiczki(1)||','||vfilmiczki(2)||','||vfilmiczki(3)||','||vfilmiczki(4)||','||vfilmiczki(5)||' )';
EXECUTE IMMEDIATE statement;
/* statement := 'INSERT INTO FILMYARNOLD VALUES (:jeden, :dwa, :trzy, :cztery, :piec)';
EXECUTE IMMEDIATE statement
USING vfilmiczki(1)
, vfilmiczki(2)
, vfilmiczki(3)
, vfilmiczki(4)
, vfilmiczki(5); */
statement := 'INSERT INTO FILMYARNOLD VALUES ('; --(:jeden, :dwa, :trzy, :cztery, :piec)';
FOR i IN 1..vfilmiczki.COUNT
LOOP
IF i = vfilmiczki.LAST THEN
statement := statement||vfilmiczki(i)||' )';
ELSE
statement := statement||vfilmiczki(i)||', ';
END IF;
--DBMS_OUTPUT.PUT_LINE (vfilmiczki(i));
END LOOP;
EXECUTE IMMEDIATE statement;
--INSERT INTO FILMYARNOLD
--VALUES (vfilmiczki(vfilmiczki.FIRST),vfilmiczki(2),vfilmiczki(3),
--vfilmiczki(4), vfilmiczki(5));
--DBMS_OUTPUT.PUT_LINE ('*****************');
--DBMS_OUTPUT.PUT_LINE (vfilmiczki((vfilmiczki.LAST)));
END;
/Im waiting for your replys
greetingsHi,
change V2 to:
STATEMENT := 'INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME) VALUES ( ';
STATEMENT := STATEMENT||VFILMICZKI(1)||','''||VFILMICZKI(2)||''' )';
EXECUTE IMMEDIATE statement;and V3 to:
----V3------------ not working ------------
STATEMENT := 'INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME, FIL_YEAR, FIL_ACTOR, FIL_TEXTT) VALUES ( ';
STATEMENT := STATEMENT||VFILMICZKI(1)||','''||VFILMICZKI(2)||''','||VFILMICZKI(3)
||','''||VFILMICZKI(4)||''','''||VFILMICZKI(5)||''' )';
EXECUTE IMMEDIATE statement;EXECUTE IMMEDIATE statement;One general remark: INSERT can be used directly in PL/SQL, you don't need to bother with dynamic SQL,
and the direct SQL will be probably more efficient than dynamic SQL.
Try this:
SET SERVEROUTPUT ON
DECLARE
TYPE FIL_TABLE IS TABLE OF VARCHAR2 (256);
vfilmiczki FIL_TABLE := fil_table();
statement VARCHAR2 (2048);
BEGIN
vfilmiczki.EXTEND;
vfilmiczki(1) := '77804';
vfilmiczki.EXTEND;
vfilmiczki(2) := 'Predator';
vfilmiczki.EXTEND;
vfilmiczki(3) := '1984';
vfilmiczki.EXTEND;
vfilmiczki(4) := 'Arnold';
vfilmiczki.EXTEND;
vfilmiczki(5) := 'get to the choppa';
-------V1------------working-----------------
INSERT INTO FILMYARNOLD (FIL_ID) VALUES ( VFILMICZKI(1) );
--------V2-------------------- not working -----------------------------------------
INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME) VALUES ( VFILMICZKI(1),VFILMICZKI(2));
----V3------------ not working ------------
INSERT INTO FILMYARNOLD (FIL_ID, FIL_NAME, FIL_YEAR, FIL_ACTOR, FIL_TEXTT)
VALUES ( VFILMICZKI(1), VFILMICZKI(2), VFILMICZKI(3), VFILMICZKI(4), VFILMICZKI(5));
END;
/ -
Quote problem in Generating Insert Statement Script to Extract Data
Hi every body;
I would like to write an sql/plsql script which can extract data from an oracle existing table in insert statements.
example:
the table employees:
empno name
1 john
2 M'hir
3 M'silou
My problem is that i have the following result:
insert into employees values('1','john');
insert into employees values('2','m'hir');------- Problem with M'hir qote
insert into employees values('3','M'silou');----- Problem with M'silou quote
How can i have :
insert into employees values('2','m''hir');------- two quotes with M'hir =M''hir
insert into employees values('3','M''silou');----- Problem with M'silou=M''silou
plz your help
thank you at advanceHi,
What is your DB version?? If it is >10g, you can use the Q delimiter (as mentioned by Solomon).
Check this out.
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_sqltypes.htm#BABFEDBG
-Arun -
Blank line in string value in insert statement causing problems
I am generating an sql statement (insert) from an xml document using xsl transformation that is later run in an sqlplus session. The issue I am coming across is that one of the tags contains free-form text that can be any number of lines. Most strings are not causing a problem, but when there is a blank line in the string (two or more endline characters together) sqlplus seems to think this signifies the end of a statement. Here is an example that I hope will clarify what is being created.
INSERT INTO MYTABLE VALUES('THIS WORKS', 0, NULL, ...);
INSERT INTO MYTABLE VALUES('THIS
ALSO
WORKS', 0, NULL, ...);
INSERT INTO MYTABLE VALUES('THIS
DOES NOT
WORK', 0, NULL, ...);
Anyone seen this problem before or have a quick fix? All I can come up with is to pre-process the xml document (which, by the way, I have no control over the format as it comes from a client) to compress vertical whitespace. (This seems like overkill to me). Any suggestions would be appreciated.
Thanks,
DanielI don't know if this will work for u.
If ur string has more than one end of lines and u don't need them, u can replace them by a single space using
replace(string,chr(13)||chr(10),' ').
If this does not solve ur problem then probably ur srting has a special charachter. To remove it
take the ascii value of the special character and then see what is the corresponding chr value and then use replace function in ur insert statement where u find this special character.
I too face same kind of problem and this worked for me. -
How to use INSERT INTO ALL statement in jdbc prepared statement with beans
Kindly give me some example that how we can use "INSERT INTO ALL STATEMENT" in jdbc prepared statement inside a jsf bean?
Actually i want to take employee id's of present employees using single jsf page and using one textbox for each employee id.
How can i use INSERT INTO ALL statement to achieve this?
Following is my code snippet.
AttendanceBean.java:
public class AttendanceBean {
private int atteid;
private String attdname;
private int attday;
private int attmonth;
private int attyear;
public static Connection getAttConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:globldb3";
String username = "scott";
String password = "tiger";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
public String addAttendance(){
Connection conn = null;
PreparedStatement pstmt = null;
boolean committed = false;
try {
conn = getAttConnection();
conn.setAutoCommit(false);
String query = "INSERT ALL INTO attendance VALUES (?,?,?,?,?)";
pstmt = conn.prepareStatement(query);
pstmt.setInt(1,this.atteid);
pstmt.setString(2,this.attdname);
pstmt.setInt(3,this.attday);
pstmt.setInt(4,this.attmonth);
pstmt.setInt(5,this.attyear);
pstmt.executeUpdate();
conn.commit();
conn.setAutoCommit(true);
committed = true;
return "home.xhtml";
} catch (Exception e) {
e.printStackTrace();
return "CRM.xhtml";
} finally {
try{
if (!committed) conn.rollback();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}catch(Exception e){
e.printStackTrace();
}Check this program for some info on Push buttons:
1-DEMO_DYNPRO_PUSH_BUTTON
2-DEMO_DYNPRO_MODULE
3-DEMO_DYNPRO_ON_CONDITION
Suppose Your screen is 101
Then in that screen create one push button and assign it a function code.
Now in the PAI of the 101 screen
Create Module for user command
Inside that module checc the sy-ucomm if sy-ucomm eq <Function code of your push button>
Insert the values in database.
*& Module USER_COMMAND_0101 INPUT
process after input for screen 0101 *
MODULE USER_COMMAND_0101 INPUT.
CASE OK_CODE.
WHEN 'SAVE'.
*Insert the values here
WHEN 'DISP'.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE. " USER_COMMAND_0101 INPUT
Regards
Neha
Edited by: Neha Shukla on Dec 3, 2008 1:02 AM
Edited by: Neha Shukla on Dec 3, 2008 1:02 AM
Edited by: Neha Shukla on Dec 3, 2008 1:06 AM -
Problem using insert statement....?
I am facing problem while using insert statement.
It is not updating the database table though the same code is working very well on another server.
Please tell what could be the problem.......?Hi Vijendra ,
You need to check few parameters while creating the table
1. Table Manitainance
2.Buffering
Also , as per you , if ur insert statement is working perfectly fine in another serve..
, it is highlt possible that table created has 'mandt ' filed , which means this table is client dependent.
Also , another reason is that , you may not this table at all in the new server .
So , check onall thiese parameters.
Ihope this solves ur problem.
Regards.
Note: Rewad if useful -
Hi ,
i ma using insert statement like
insert into sys_jklm_mapping ( CISCO ) values ('1.1.1') where channel_no = 1;
its giving error. please help me .....
Surenderhello my dear surendhra,
What is the need of where clause in insert statement.
U just remove the where clause in insert statement.
Ravi raj
Hitec city,Hyderabad,India. -
Problem with single quote when exporting insert statement
Hi
I'm using Oracle SQL Developer 2.1.1.64 on Ubuntu 10.04. I got some records which has single quote in it.
For example,
Let says Table '*TABLE_A*' has varchar2 column called '*COL_A*'.
And there is only one record in the table and the value is:
his friend's dog name is dog.
When I export that table data to insert statement, i got this:
Insert into TABLE_A (COL_A) VALUES ('his friend's dog name is dog.');
As you can see friend's is wrong, it should be friend''s instead. (note the double single quotes).
Anyone knows how to fix this please?Yes - that's a bug. But probably not what you're expecting.
Mind you really can't use "normal" SQL on LOBs, because they're just too big to fit in the statements.
You should export and import them through e.g. the DBMS_LOB package.
I do remember some request on the SQL Developer Exchange to automate this, so go vote there to add weight for future implementation.
So the bug is that the column's fields should all yield NULL inside the INSERTs.
Regards,
K. -
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
public class Demo extends 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
public static void 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
public static int 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
public static void 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
public static 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
public static void 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
public static void 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
public static void 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
public void 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
public class QueryTableModel extends 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;//returns the name of each column in the three table
}//end getColumnName
public int getColumnCount(){//Returns the number of columns in the column model
return colCount;//returns the number of columns in the three tables
}//end getColumnCount
public int 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
public void 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
public void 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
public void 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
public void 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 QueryTableModelhere'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;
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(); -
JDBC insert with XMLTYPE data type
Hi,
SOAP to JDBC scenario. Oracle 11G as a receiver.
Requirement is to insert whole xml payload message in one of Oracle table fields as a xml string. Target oracle DB table column is defined with XMLTYPE data type, it has capacity to hold xml data more than 4GB. I am using graphical mapping with direct INSERT statement.
When I try to insert xml payload with smaller size transaction goes through. However when the xml payload size increases it is giving following error in JDBC receiver communication channel monitoring.
Could not execute statement for table/stored proc. "TABLE_NAME" (structure "StructName") due to java.sql.SQLException: ORA-01704: string literal too long
Here is insert statement as in communication channel monitoring. (Note: XML payload with bold characters is truncated)
INSERT INTO TABLE_NAME (REQ_ID, OUTAGE_OBJ, TIMESTAMP, PROCESSED_FLAG) VALUES (VAL1, <?xml version="1.0" encoding="UTF-8"?>............</>, TO_DATE(2010-11-15 10:21:52,YYYY-MM-DD HH24:MI:SS), N)
Any suggestions to handle this requirement?
Thank you in advance.
Anand More.Hi Anand,
The problem here is definitely the length of the SQL query. i.e "INSERT INTO ......... VALUES......."
This is what i got when i searched for this ORACLE error code:
ORA-01704: string literal too long
Cause: The string literal is longer than 4000 characters.
Action: Use a string literal of at most 4000 characters. Longer values may only be entered using bind variables.
Please ask a ORACLE DB expert on how to handle this Also i am not sure how can we handle Bind Varibales in SAP PI.
I hope this helps.
Regards, Gaurav. -
PI JDBC INSERT Failed but message is registered as successful
Dear all,
We have a scenario where we send an IDOC with prices of several materials to PI and then using JDBC we send it to an SQL database. During the mapping, we create an INSERT statement for each segment of the IDOC .
The problem is, that sometimes one or more insert statements may fail (the customer can see no new lines in the database), but in the monitoring everything seems ok . The message has a "processed successfully" status so there is no way for the customer to know that something went wrong so each time they check the prices one by one .
The strange part is that if they find a mistake, they just resend the same message and after one or two tries it works ! This indicates that the problem is not in the actual data but somewhere else (probably in the database ?) .
So, one problem is why the data is not written and the second issue is why the message is logged as successful although one query has failed ,
Thank you all for your help .Thank you for both for your quick response .
Unfortunately this scenario is up and running for quite some time already and the customer does not want to change it . Also, I am not sure how I could make an Insert statement that would include many lines .
Right now, the mapping produces the following result (I only post the first two statements, the actual number is around 500)
<Statement><dbTableName action="INSERT">
<table>min_sapsrs_price</table>
<access><STAT>0</STAT><
ACT_DATE>20100701</ACT_DATE>
<MOD_DEL>MOD</MOD_DEL>
<INTCODE>000000000014009003</INTCODE>
</access>
</dbTableName>
</Statement>
<Statement>
<dbTableName action="INSERT">
<table>min_sapsrs_price</table>
<access><STAT>0</STAT>
<ACT_DATE>20100701</ACT_DATE>
<MOD_DEL>MOD</MOD_DEL>
<INTCODE>000000000014009004</INTCODE>
</access>
</dbTableName>
</Statement>
could you please tell me how should I propose them to do it ? -
I am having a problem. I would like to insert some form data into a database using jsp but I have coded it and it gives me an error insert statement syntax is incorrect here is my code
<%@page import="java.sql.*"%>
<html>
<head>
<title>
</title>
</head>
<body>
<%
String _driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String _url = "jdbc:odbc:testdata";
try {
Class.forName (_driver);
String dataSourceName = _url;
String dbURL = dataSourceName;
Connection con = DriverManager.getConnection(dbURL);
Statement s = con.createStatement();
String insert;
insert = "insert into order (field1 , field2 , field3) values ('"
+ request.getParameter("item1") + "' , '" + request.getParameter("item2") + "' , "
+ "'" + request.getParameter("item3") + "')";
out.print(insert);
s.execute(insert);
s.close();
con.close();
} // closes try statement
catch (Exception err) {
out.print("ERROR: " + err);
}; // closes catch statement
%>
<a href="shoppingcart.jsp">go back to shopping cart</a>
</body>
</html>here is the error it gives me
ERROR: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
the insert statement looks right to me but there is something wrong anyone got any ideas. Thanxs in advance.AAAHHHH. Order is a reserved word and that was what my table was named. I suppose because of the order by clause it is. Figures spend hours staring at it and it is right there. I have to start using prefixes and suffixes on my code it would save me so much hassel.
Maybe you are looking for
-
Having followed the instructions for "if you have never synced your device to itunes" and my computer displayed the message that the device has been restored, my phone is still saying its disabled and I should connect to itunes. What do I do now??
-
Indesign CS3 & Epson r2400 not printing tabloid paper
Indesign CS3 & Epson r2400 not printing tabloid paper. MAC OS 10.5.6. Have tried all configurations of page set up 11 x17 and 8.5 x 11 spreads, custom page sizes and default paper set up. The print comes out cut off. Epson says it's an Indd problem.
-
Is it a bug if a training 'nX' specifier is ignored with advance='NO'?
I found that Sun Fortran does not count blanks from an 'nX' specifier when writing with advance='NO'. For example, this code: write(*,'(A,4X)',advance='NO') '1' write(*,'(A)') '2' write(*,'(A,4(" "))',advance='NO') '1' write(*,'(A)') '2' end results
-
Hi there. I just cant see the business rules EAS Console. I mean when I click on Business Rules....the error is "Error logging in to Business Rules. The repository has not been configured or you are not authorized to use Business Rules.". Detailes er
-
Print quality on OS X 10.6 + Illustrator CS5 + Canon Pro 9000 MKII
Hi! Printing from Illustrator on iMac on our Canon Pro 9000 MKII produces ugly low resolution jagged edges on curved shapes. Same file printed on the same printer from Illustrator on Windows results in (almost) perfectly smooth edges. I understand th