Java « Добавление записей в таблицу MySQL на Java
Добрый день, есть код:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .java.geshi_code {font-family:monospace;} .java.geshi_code .imp {font-weight: bold; color: red;} .java.geshi_code .kw1 {color: #000000; font-weight: bold;} .java.geshi_code .kw2 {color: #000066; font-weight: bold;} .java.geshi_code .kw3 {color: #003399;} .java.geshi_code .kw4 {color: #000066; font-weight: bold;} .java.geshi_code .co1 {color: #666666; font-style: italic;} .java.geshi_code .co2 {color: #006699;} .java.geshi_code .co3 {color: #008000; font-style: italic; font-weight: bold;} .java.geshi_code .coMULTI {color: #666666; font-style: italic;} .java.geshi_code .es0 {color: #000099; font-weight: bold;} .java.geshi_code .br0 {color: #009900;} .java.geshi_code .sy0 {color: #339933;} .java.geshi_code .st0 {color: #0000ff;} .java.geshi_code .nu0 {color: #cc66cc;} .java.geshi_code .me1 {color: #006633;} .java.geshi_code .me2 {color: #006633;} .java.geshi_code span.xtra { display:block; }
Connection connection = null;
Statement stmt;
String driverName = "com.mysql.jdbc.Driver"; // MySQL MM JDBC driver
Class.forName(driverName);
String serverName = "localhost";
String mydatabase = "database";
String urldb = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "1111";
String password = "2222";
connection = (Connection) DriverManager.getConnection(urldb, username, password);
connection.setEncoding("UTF-8");
....
String sql = "INSERT INTO table1 VALUES ('" + list.item(i).getNodeValue() + "', " + i + ", desc);";
stmt = (Statement) connection.createStatement();
stmt.executeUpdate(sql);
строка sql выводится в программе в русских буквах, а в бд заносится в крякозябликах, как решить вопрос?
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .java.geshi_code {font-family:monospace;} .java.geshi_code .imp {font-weight: bold; color: red;} .java.geshi_code .kw1 {color: #000000; font-weight: bold;} .java.geshi_code .kw2 {color: #000066; font-weight: bold;} .java.geshi_code .kw3 {color: #003399;} .java.geshi_code .kw4 {color: #000066; font-weight: bold;} .java.geshi_code .co1 {color: #666666; font-style: italic;} .java.geshi_code .co2 {color: #006699;} .java.geshi_code .co3 {color: #008000; font-style: italic; font-weight: bold;} .java.geshi_code .coMULTI {color: #666666; font-style: italic;} .java.geshi_code .es0 {color: #000099; font-weight: bold;} .java.geshi_code .br0 {color: #009900;} .java.geshi_code .sy0 {color: #339933;} .java.geshi_code .st0 {color: #0000ff;} .java.geshi_code .nu0 {color: #cc66cc;} .java.geshi_code .me1 {color: #006633;} .java.geshi_code .me2 {color: #006633;} .java.geshi_code span.xtra { display:block; }
Connection connection = null;
Statement stmt;
String driverName = "com.mysql.jdbc.Driver"; // MySQL MM JDBC driver
Class.forName(driverName);
String serverName = "localhost";
String mydatabase = "database";
String urldb = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "1111";
String password = "2222";
connection = (Connection) DriverManager.getConnection(urldb, username, password);
connection.setEncoding("UTF-8");
....
String sql = "INSERT INTO table1 VALUES ('" + list.item(i).getNodeValue() + "', " + i + ", desc);";
stmt = (Statement) connection.createStatement();
stmt.executeUpdate(sql);
строка sql выводится в программе в русских буквах, а в бд заносится в крякозябликах, как решить вопрос?
1 ответов
решил вопрос, добавил в строку соединение изменение кодировки и поменял в бд тип кодировки для поля бд
Использование (пользовательских) данных непосредственно в SQL-запросе:
- Неэффективно
- Чревато SQL-инъекциями
Для параметризованных запросов следует использовать PreparedStatement.