Re: Problem whit insert pdf file into mySQL Database
sahm wrote:
I'm trying to insert PDF file in to mySQL [sic] Data Base but I keep receive
error and this is my code
markspace and Jeff Higgins have already pointed out that your code will not
compile and that you fail to reveal your actual problem.
But wait, there's more.
public static File file;
public static FileInputStream fis;
Sorry, 'public' members? And why 'static'?
void get_Doc()
{
(Unconventional indentation - should line up with 'void getDoc()' line.)
try
{
String fl = null;
It's not often a good idea to initialize a variable to a value you never
intend to use. In the code you show us, doing so pushes a compiler error to a
runtime exception. You want to do the opposite.
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Select File");
FileFilter filter, filter2;
filter = new FileNameExtensionFilter("PDF", "PDF");
filter2 = new FileNameExtensionFilter("JPG", "JPG");
fc.addChoosableFileFilter(filter2);
fc.addChoosableFileFilter(filter);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setAcceptAllFileFilterUsed(false);
int returnVal = fc.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
file = fc.getSelectedFile();
//fl = file.toString();
fis = new FileInputStream(file);
Be very, very careful mixing long-running actions with the Event Dispatch
Thread. You should separate non-GUI actions to a different thread.
JOptionPane.showMessageDialog(this, fl.toString(),
Invoking 'toString()' on a 'String' is wacky; invoking on value 'null' throws
'NullPointerException'.
"Information", JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(this, "Please select a
file" , "Error", JOptionPane.ERROR_MESSAGE);
}
this.dcument_Location_jTextField.setText(fl.toString());
Invoking 'toString()' on a 'String' is wacky; invoking on value 'null' throws
'NullPointerException'.
Variable names (for non-constant or non-final variables) should not contain
underscores.
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.toString(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}
///////////////////////////////////////////////////////////////////////
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void insert_Doc()
{
try
{
IPClass ipc = new IPClass();
Class.forName("com.mysql.jdbc.Driver");
You don't need to attempt to reload a class over and over and over and over
and over and ...
Once, in a static initializer, is enough.
Connection con;
con = DriverManager.getConnection("jdbc:mysql://" + ipc.ip
+ "/" + ipc.db,ipc.user,ipc.ps);
Why on separate lines?
//Statement stat = con.createStatement();
Use 'PreparedStatement' instead of plain 'Statement' almost always.
String inserting_Data = "insert into document_archive ("
+
"Doc_ID, Doc_Type, Doc_Name,
Doc_Date, Doc_file, " +
Whoa, there, sport! That's some wide indentation you got there!
"Doc_Bank_NO, Doc_Bank_Name,
Doc_Add_user ) " +
"values (?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement ps = null;
Why in the world do you bother initializing 'ps' to 'null'?
ps = con.prepareStatement(inserting_Data);
ps.setInt(1,
Integer.valueOf(documen_NO_jTextField.getText()));
ps.setString(2,
String.valueOf(document_Type_jComboBox.getSelectedItem()));
ps.setString(3, document_Name_jTextField.getText());
String today = getDocumentDate();
ps.setString(4, String.valueOf(today));
ps.setBinaryStream(5, fis, (int), file.length());
ps.setString(6,
String.valueOf(bankNOjComboBox.getSelectedItem()));
ps.setString(7, bankNOjTextField.getText());
ps.setString(8, userName.useName);
//ps.setBinaryStream(5, f1, (int) file.length());
//ps.setString(5, fd.st_FName);
ps.executeUpdate();
JOptionPane.showMessageDialog(this, "Document inserted
successfully", "Information", JOptionPane.INFORMATION_MESSAGE);
clean_Data();
Dude! Separate worker threads from the EDT!
This is covered in the Swing tutorial on java.sun.com. Read it.
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.toString(), "Error",
JOptionPane.ERROR_MESSAGE);
}
}
--
Lew