解决乱码: url字符串加上?useUnicode=true&characterEncoding=utf-8;

mysql数据库无法插入中文数据问题:将mysql数据库的编码改为utf-8;

ResultSet中get(列名)方法不一定获取的是数据库字段名,也有可能是自定义的别名,例如:select id,name,password pwd from user 此时resultSet.get("password")会抛出异常!

反射封装JDBC

 package test;

 import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; public class TestReflectionJDBC<T> { private static Connection connection = null;
private static PreparedStatement preparedStatement = null;
private static ResultSet resultSet = null; private Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
if (connection == null) {
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456");
}
} catch (Exception e) {
e.printStackTrace();
}
return connection;
} public List<T> query(String sql,Class<T> clzz,Object...objects){
List<T> list=new ArrayList<>();
try {
preparedStatement=getConnection().prepareStatement(sql);
for(int i = 0;i<objects.length;i++){
preparedStatement.setObject(i+1, objects[i]);
}
resultSet=preparedStatement.executeQuery();
if(resultSet!=null){
ResultSetMetaData resultSetMetaData=null;
while(resultSet.next()){
//if(resultSetMetaData==null){
resultSetMetaData=resultSet.getMetaData();
T t=clzz.newInstance();
int count=resultSetMetaData.getColumnCount();
for(int i=0;i<count;i++){
String name=resultSetMetaData.getColumnName(i+1);
Field field=clzz.getDeclaredField(name);
field.setAccessible(true);
Object value=resultSet.getObject(name);
field.set(t, value);
}
list.add(t);
//}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
public int update(String sql,Object...objects){
int result=0;
try {
preparedStatement=getConnection().prepareStatement(sql);
for(int i=0;i<objects.length;i++){
preparedStatement.setObject(i+1, objects[i]);
}
result=preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
}

JDBC mysql 相关内容笔记的更多相关文章

  1. MYSQL相关完整笔记

    useradd mysql -s /sbin/nologin cat/etc/passwd | grep mysqlcat /etc/group | grep mysql 源目录 cd /usr/sr ...

  2. 关于go语言的测试相关内容笔记

    其实之前对于测试自己一直比较弱,不管是python的还是go的,关于测试这块并没有非常注重,这次就好好整理一下关于go的测试 单元测试 Go程序主要包含三类测试: 功能测试(test).基准测试(be ...

  3. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. mysql数据库内容相关操作

    第一:介绍 mysql数据内容的操作主要是: INSERT实现数据的插入 UPDATE实现数据的更新 DLETE实现数据的删除 SELECT实现数据的查询. 第二:增(insert) 1.插入完整的数 ...

  6. Hibernate5笔记8--Hibernate事务相关内容

    Hibernate事务相关内容: (1) 事务四大特性(简称ACID): (1)原子性(Atomicity) 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行. (2)一致性(Con ...

  7. MySQL的日志相关内容

    本篇文章介绍一下mysql的备份和日志,由于备份时需要用到日志,所以在讲备份前,如果日志内容篇幅过长,将会把日志和备份分开单独来讲,先简单介绍一下mysql的日志相关内容. MySQL日志 日志是my ...

  8. JDBC MYSQL 学习笔记(一) JDBC 基本使用

    1.JDBC简单介绍 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范.称之为JDBC. JDBC全称为:Java Data Base Connectivity(java数据 ...

  9. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. linux基础命令用法

    目录管理 ls.cd.pwd.mkdir.rmdir.tree ls(list) 列出,列表 用法: ls -l:长格式 文件类型: -:普通文件 (f) d: 目录文件 b: 块设备文件 (bloc ...

  2. springCloud系列 Config配置中心

    1.config服务的部署 2.yum文件的格式 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 3.热部署 4.配 ...

  3. 图解MySQL索引--B-Tree(B+Tree)

    看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等 ...

  4. Spring Web工程web.xml零配置即使用Java Config + Annotation

    摘要: 在Spring 3.0之前,我们工程中常用Bean都是通过XML形式的文件注解的,少了还可以,但是数量多,关系复杂到后期就很难维护了,所以在3.x之后Spring官方推荐使用Java Conf ...

  5. 如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档:     随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项     ...

  6. 【BZOJ 2673】[Wf2011]Chips Challenge

    题目大意: 传送门 $n*n$的棋盘,有一些位置可以放棋子,有一些已经放了棋子,有一些什么都没有,也不能放,要求放置以后满足:第i行和第i列的棋子数相同,同时每行的棋子数占总数比例小于$\frac{A ...

  7. 【prufer编码】BZOJ1430 小猴打架

    Description 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打架之后,整个森 ...

  8. 面试阿里前端P6血和泪换来的收获

      我的一个朋友在前端耕耘一段时间,也在网上进行了高度培训学习,最近一段时间他打算跳槽去阿里面试前端P6开发岗位,结果被痛虐了一回,估计从此以后会给他留下不可磨灭的阴影啊 真是十年生死两茫茫,一鲁代码 ...

  9. Matlab实现画柱状图坐标标签旋转

    引言: 在用matlab画柱状图或者其他图的时候,你是否碰到下图这种情况: 乍一看这个柱状图画的有馍有洋的,but,仔细一看你会发现,横坐标标签如果再长一点就不好看啦,甚至会重叠,就像这样: 这样的图 ...

  10. 加密算法:DigestUtils与java MessageDigest

    1.使用Spring的DigestUtils public class StringUtilTest { static final String TARGET = "changeme&quo ...