You don't need the commit command. It is done automatically, unless specified otherwise.
Also try to print the query and what actually gets executed.
Also the executeUpdate returns an int value. It shows how many rows have been updated/inserted. Try to print that too.
Also your catch block is empty. Why? That is problem. If you have an exception, you print nothing and you don't know if something went wrong.
You also need to close the connection as well as the Statement.
And it is better not to use the from.toString() . If you want to save the address, try to use: from.getMailAddress() or something. Because toString is used for displaying and maybe in the future you decide you want to change the way the object gets displayed. But since you need to save in the DB only the email, then you need to get the email.
import java.io.*;
import java.util.Properties;
import javax.mail.*;
import java.sql.*;
public static void insertm(int mid,Address from,String sub){
try {
// Load the JDBC driver
Class.forName ("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@//localhost:1521/xe", "scott", "tiger");
Statement stmt = conn.createStatement();
String str = from.toString();
System.out.println(sub+", "+str+", "+mid);
//sql
String sql = "insert into mms(subject,pno,mid) values ('"+sub+"','"+str+"',"+mid+")";
System.out.println("Executing: "+sql);
int i = stmt.executeUpdate(sql);
System.out.println("Rows Updated: "+i);
stmt.close();
conn.close();
} catch(Exception e) {
System.out.println("Error: "+e.getMessage());
System.out.println("Details: ");
e.printStackTrace();
}
The next step would be to move the close commands in the finally block:
....
try {
....
} catch (Exception e) {
System.out.println("Error: …