ミムの部屋

社内SEが,興味をもったことを書いていきます.

MySQLに入らない文字のテストコード

MYSQLに入らない文字がいくつかあります.
昔,それをチェックするために作ったソースコードです.

 	Class.forName("com.mysql.jdbc.Driver");

    // データベースへの接続
    Connection con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/", "root","password");
    // Statement生成
    Statement stmt = con.createStatement();
    String st = "drop database test;";
    stmt.execute(st);
    st = "create database test;";
    stmt.execute(st);
    st = "use test;";
    stmt.execute(st);
    // テーブル作成SQL文
    st = "CREATE table person(" +
    	 "id int UNSIGNED NOT NULL AUTO_INCREMENT," +
    	 "name varchar(100) ," +
    	 "tweet varchar(140),"+		
         "primary key(id));";
    /*
    //1
    //"screenName varchar(100)," +//2
    "tweet varchar(140));";//35
    */
    // SQL実行
    stmt.execute(st);
    stmt.execute("alter table person charset=utf8mb4");
    stmt.close();
   String str =new String("こa𠀋んにチ𠀋は、abc藍𠀋だよ。かか𠀋");//𠀋
   int len = str.length();
   //System.out.println("叱".getBytes().length);
   //System.out.println(len);
   EntityManager manager = new EntityManager( "jdbc:mysql://localhost:3306/test", "root","password");
   Person person = manager.create(Person.class);
   person.setId(10);
   person.setName("名前");
   person.setTweet(str);
   try{
   /*
   System.out.println("str: " + str.getBytes().length + 
		   "\nstr1:" +str1.getBytes().length+
		   "\nstr2:" + str2.getBytes().length);
   */
   person.save();
   }catch (UndeclaredThrowableException e){
	   char ch[] = str.toCharArray();
	   for(int i=0; i < len-1; i++){
    	   if(Character.isHighSurrogate(ch[i]) || Character.isLowSurrogate(ch[i])){
    		   ch[i]=' ';   
    	   }
       }
	   str=String.valueOf(ch);
	   System.out.println(str);
	   System.out.println("こaんにチは、abc藍だよ。かか");
	   person.setTweet(str);
	   person.save();
   }
   
}
   public interface Person extends Entity{
   	     public int getId();
         public void setId(long id);
         public String getName();
         public void setName(String name);
       //public String getScreenName(); 
       public String getTweet();
       public void setTweet(String tweet);
   }