zoukankan      html  css  js  c++  java
  • 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等类获取资源。

  • 相关阅读:
    java中的静态变量,静态方法与静态代码块详解
    增删改查简单的sql语句
    Java中的输入流与输出流
    Java向mysql中插入时间的方法
    java中Statement 对象
    request和session获取参数的区别
    Session 详解
    Java中静态变量与非静态变量的区别
    MYSQL基础操作之数据约束与关联查询
    MYSQL基础操作之单表的增删改查
  • 原文地址:https://www.cnblogs.com/skimoon/p/3659358.html
Copyright © 2011-2022 走看看