最近在写java项目的时候想要往数据库里存点东西,于是就用mysql数据库来存数据,可我在使用过程中遇到了两个问题,现做个笔记,问题如下:
一、报com.mysql.jdbc.Driver类未找到
之所以报这个错,不是因为没有导入mysql驱动包,而是我导的包(后缀名是zip)有问题,于是我换了个包(后缀名是jar)就OK啦!
二、当我存储中文数据时,数据库显示??
这个问题网上有很多的答案,我是按其中的一种就ok啦,主要的一句话是在URL中加入:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
代码如下:
public class MySqlUtil {
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "123";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void connectTest(){
Connection conn=getConn();
if(conn!=null){
MyLog.println("数据库连接测试成功");
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}else{
MyLog.println("数据库连接测试失败");
}
}
public static int insert(String tabelName,Map<String,Object> map) {
if(map==null || map.size()==0){
return 0;
}
StringBuffer n=new StringBuffer();
StringBuffer v=new StringBuffer();
Iterator<String> iter= map.keySet().iterator();
while(iter.hasNext()){
String key=iter.next();
n.append(key+",");
if(map.get(key) instanceof String){
v.append("'"+map.get(key)+"',");
}else{
v.append(map.get(key)+",");
}
}
Connection conn = getConn();
int i = 0;
String sql = "insert into "+tabelName+" ("+n.substring(0, n.length()-1)
+") values("+v.substring(0, v.length()-1)+")";
MyLog.println(sql);
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public static void executeSQL(String sql){
Connection conn = getConn();
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}