Reasons for the question mark display after JDBC links mysql inserts data and solutions
- 2020-12-18 01:56:28
- OfStack
1. Enter mysql in cmd to see the default encoding format:
mysql
>
show variables like "%char%";
If it's not utf8(because I'm using utf8), turn off the mysql service and add it to my.ini
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
2. Is the encoding format in eclipse utf8
3. If not, check the encoding of the mysql client table
show create table tablename
If not utf-8. Delete and rebuild 1 table (I failed to change the original table before, which may be the reason for my own operation)
Share a classic JDBC link to MySQL program
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLConnection {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String url = null;
String user = null;
String password = null;
String sql = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // loading mysq drive
} catch (ClassNotFoundException e) {
System.out.println(" Driver loading error ");
e.printStackTrace();// Print error details
}
try {
url =
"jdbc:mysql://localhost/test?user=root&password=yqs2602555&useUnicode=true&&characterEncoding=gb2312&autoReconnect = true";// Simple way: url = "jdbc:myqsl://localhost/test( The database name )? user=root( The user )&password=yqs2602555( password )";
user = "root";
password = "yqs2602555";
conn = DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
System.out.println(" Database link error ");
e.printStackTrace();
}
try {
stmt = conn.createStatement();
sql = "select * from dept";//dept This table has deptno . deptname and age this 3 A field
rs = stmt.executeQuery(sql);// perform sql statements
while(rs.next()) {
System.out.print(rs.getInt("deptno") + " ");
System.out.print(rs.getString("deptname") + " ");
System.out.println(rs.getInt("age") + " ");
}
} catch (SQLException e) {
System.out.println(" Data manipulation error ");
e.printStackTrace();
}
// Close the database
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch(Exception e) {
System.out.println(" Database shutdown error ");
e.printStackTrace();
}
}
}
The operation results are as follows:
1 yqs 0
2 hello 0
3 yqsshr 0
4 world 0
5 hryspa 0
1 yqs 0
2 hello 0
3 yqsshr 0
4 world 0
5 hryspa 0
1 yqs11 21
1 yqs21 31
1 yqs31 41
1 yqs41 51