javamysqlunicode

Java and MySql set unicode characters for this class


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());
        }
    }
}

Solution

  • 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&characterEncodi‌​ng=UTF-8",
    

    Optionally, a collation can be specified, such as: &connectionCollation=utf8_general_ci