PreparedStatement/Statement处理insert update等操作时乱码,以及URL

原文:

在顶目中无意中碰到PreparedStatement 在存DB时出现乱码,困扰了好久终于解决问题
  

  问题代码如下

 1     ps = con.prepareStatement(INSERT_SQL);
 2 
 3    ps.setString(1, username);
 4 
 5    ps.setLong(2, messageID);
 6 
 7    ps.setString(3, new java.util.Date());
 8 
 9    ps.setInt(4, msgXML.Length());
10 
11    ps.setString(5, “中文内容”);
12 
13    ps.executeUpdate();    

  debug时可以看到在 ps.executeUpdate(); 行 ps 中的 “中文内容” 变成 ????

  原因是设置Datasource 的Driver 时Jdbc.Url=Jdbc:mysql://192.168.12.22:3306/Ts 没有指定编码

  可以按如下修改

  Jdbc.Url=Jdbc:mysql://192.168.12.22:3306/Ts?characterEncoding=utf8

  问题解决

原文完。

  当然,jdbc中也可以:

jdbc提供如下方法:  

1 conn = DriverManager.getConnection(url, username, password);

显然url其实是一个就是资源定位符,所以也可以像HTTP协议那样传递参数。

所以jdbc提供了如下方法:

1 String url = "jdbc:mysql://host/dbname?username=ding&password=ding&characterEncoding=utf8";
2 conn = DriverManager.getConnection(url);

其实大部分的同学协议都可以向http协议传递参数,这里的叫jdbc协议。jdbc协议主要靠TCP协议实现。

既然URL表示一个资源地址,那么我们就可以使用jdk的URL,URLConnection,URI等类获取资源。

 

posted @ 2014-04-11 19:26  南国生红豆  阅读(905)  评论(0编辑  收藏  举报