博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PreparedStatement/Statement处理insert update等操作时乱码,以及URL
阅读量:7223 次
发布时间:2019-06-29

本文共 993 字,大约阅读时间需要 3 分钟。

原文:

在顶目中无意中碰到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等类获取资源。

 

转载于:https://www.cnblogs.com/skimoon/p/3659358.html

你可能感兴趣的文章
create-react-app项目添加less配置
查看>>
ucore操作系统实验笔记 - 重新理解中断
查看>>
leetcode46 Permutation 排列组合
查看>>
Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
查看>>
从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
查看>>
JS题目及答案整理
查看>>
C++11: atomic 头文件
查看>>
听说你叫Java(二)–Servlet请求
查看>>
vue脚手架vue-cli
查看>>
算法---两个栈实现一个队列
查看>>
redis学习笔记(三):列表、集合、有序集合
查看>>
TypeScript迭代器
查看>>
python学习笔记 - ThreadLocal
查看>>
基于组件的设计工作流与界面抽象
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>
vagrant 添加本地 box 安装 laravel homestead
查看>>
Vim 折腾记
查看>>
eclipse(luna)创建web工程
查看>>
简洁Java之道
查看>>
QCon讲师对对碰——洪小军采访梁宇鹏:就是爱Golang
查看>>