Am trying to insert and retrieve Tamil(language) values.But i am getting like ??????
.
Insert Query like,
x
"INSERT INTO category VALUES (19, 'இந்தியா நாட்டின்','A');"
My Code like,
public static void main(String[] args) {
System.out.println("");
System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "test";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "root";
try {
Class.forName(driver).newInstance();
conn = (Connection) DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
try{
Statement st = (Statement) conn.createStatement();
st.executeQuery("select categoryname from category");
ResultSet rs = st.getResultSet();
int count = 0 ;
while(rs.next()){
String name = rs.getString("categoryname");
System.out.println("Vlalue "+ name);
++count;
}
}
catch (SQLException s){
System.out.println("SQL statement is not executed!");
}
conn.close();
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
Note :
My Configuration,
OS : windows 7 (32 bit),
DataBase : MySQL 5.1,
JAVA : 1.7
Advertisement
Answer
You have to use useUnicode=true&characterEncoding=utf-8
in your connection:
Connection connection = DriverManager.getConnection(
"jdbc:mysql://db_name?useUnicode=true&characterEncoding=utf-8", "root", "pass");
I consider that your database is created like this :
CREATE TABLE table_name
(
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
Here is an example how my result look like :
EDIT
Code
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ConnectionJSon {
static String driver = "com.mysql.jdbc.Driver";
static String DB_username = "root";
static String DB_password = "admin";
static String DB_URL =
"jdbc:mysql://localhost:3306/d3?useUnicode=true&characterEncoding=utf-8";
public static void main(String[] args) throws Exception {
try {
Connection connection = DriverManager.getConnection(DB_URL,
DB_username, DB_password);
String q = "INSERT INTO table1 VALUES (?)";
PreparedStatement preparedStatement = connection.prepareStatement(q);
preparedStatement.setString(1, "இந்தியா நாட்டின்");
int exc = preparedStatement.executeUpdate();
System.out.println(exc);
q = "SELECT * FROM table1";
preparedStatement = connection.prepareStatement(q);
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
System.out.println("Success");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
SQL
create table table1(
col varchar(30)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;