I am trying to input unicode characters (greek) to my database. However I read that in order to do so I have to set the unicode characters to active. How can I set the character set to unicode for the specific class?
public class database {
public static database busDatabase = null;
protected String connection_url = "";
protected String driver_name = "";
protected String name = "";
protected String user = "";
protected String password = "";
protected Class driver_class = null;
protected static Connection connection = null;
protected ResultSet results = null;
protected String current_table = "";
protected Boolean error = false;
public database(String name, String user, String password) {
this(name, user, password, "jdbc:mysql://localhost:3306", "com.mysql.jdbc.Driver");
}
//public void run() {
// con = (Connection)DriverManager.getConnection(connection_url, user, password);
//}
public static Boolean getCon() throws SQLException
{
return connection.isValid(0);
}
public database(String name, String user, String password, String connection_url, String driver_name)
{
this.name = name;
this.user = user;
this.password = password;
this.connection_url = connection_url;
this.driver_name = driver_name;
}
public static void openBusDatabase()
{
try
{
busDatabase = new database("appointments", "root",
"some", "jdbc:mysql://localhost",
"com.mysql.jdbc.Driver");
busDatabase.open();
System.out.println("dbopened");
} catch (Exception ex) {
throw new InvalidQueryException("Unable to open database " + ex.getMessage());
}
}
}
Pass a parameter as boolean to make the connection dynamically based on your requirements. You will need encoding at database end as well, I hope that is already there.
Based on the condition change the connectivity string.
change
"jdbc:mysql://localhost",
to
"jdbc:mysql://localhost?useUnicode=true&characterSetResults=utf8&characterEncoding=UTF-8",
Optionally, a collation can be specified, such as: &connectionCollation=utf8_general_ci