JDBC mysql 相关内容笔记
2019-02-25 16:10:43来源:博客园 阅读 ()
解决乱码: url字符串加上?useUnicode=true&characterEncoding=utf-8;
mysql数据库无法插入中文数据问题:将mysql数据库的编码改为utf-8;
ResultSet中get(列名)方法不一定获取的是数据库字段名,也有可能是自定义的别名,例如:select id,name,password pwd from user 此时resultSet.get("password")会抛出异常!
反射封装JDBC:
1 package test; 2 3 import java.lang.reflect.Field; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.ResultSetMetaData; 9 import java.sql.SQLException; 10 import java.util.ArrayList; 11 import java.util.List; 12 13 public class TestReflectionJDBC<T> { 14 15 private static Connection connection = null; 16 private static PreparedStatement preparedStatement = null; 17 private static ResultSet resultSet = null; 18 19 private Connection getConnection() { 20 try { 21 Class.forName("com.mysql.jdbc.Driver"); 22 if (connection == null) { 23 connection = DriverManager.getConnection( 24 "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8", "root", "123456"); 25 } 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 return connection; 30 } 31 32 public List<T> query(String sql,Class<T> clzz,Object...objects){ 33 List<T> list=new ArrayList<>(); 34 try { 35 preparedStatement=getConnection().prepareStatement(sql); 36 for(int i = 0;i<objects.length;i++){ 37 preparedStatement.setObject(i+1, objects[i]); 38 } 39 resultSet=preparedStatement.executeQuery(); 40 if(resultSet!=null){ 41 ResultSetMetaData resultSetMetaData=null; 42 while(resultSet.next()){ 43 //if(resultSetMetaData==null){ 44 resultSetMetaData=resultSet.getMetaData(); 45 T t=clzz.newInstance(); 46 int count=resultSetMetaData.getColumnCount(); 47 for(int i=0;i<count;i++){ 48 String name=resultSetMetaData.getColumnName(i+1); 49 Field field=clzz.getDeclaredField(name); 50 field.setAccessible(true); 51 Object value=resultSet.getObject(name); 52 field.set(t, value); 53 } 54 list.add(t); 55 //} 56 } 57 } 58 } catch (Exception e) { 59 e.printStackTrace(); 60 } 61 return list; 62 } 63 public int update(String sql,Object...objects){ 64 int result=0; 65 try { 66 preparedStatement=getConnection().prepareStatement(sql); 67 for(int i=0;i<objects.length;i++){ 68 preparedStatement.setObject(i+1, objects[i]); 69 } 70 result=preparedStatement.executeUpdate(); 71 } catch (SQLException e) { 72 e.printStackTrace(); 73 } 74 return result; 75 } 76 }
原文链接:https://www.cnblogs.com/Meiwah/p/10421402.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:使用zxing二维码识别
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- JSP+SSH+Mysql+DBCP实现的租车系统 2020-06-09
- JSP+Structs+JDBC+mysql实现的诚欣电子商城 2020-06-08
- 面试的时候按照这个套路回答 Java GC 的相关问题一定能过 2020-06-08
- 总结一些 Java 相关笔试、面试题,万一用上了呢 (=_=) -- 基 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash