String sql ="insert into userinfo(name,pwd) values(?,?)";

PreparedStatement pst=getConnection().prepareStatement(sql);

pst.setString(1,"小明");

pst.setString(2,"123");

pst.executeUpdate();

小伙子给你写了一个通用的增删改查的工具类,你那样写太麻烦

资源文件jdbc.properties

jdbc.Driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/xxxjdbc.username=rootjdbc.password=root

package com.dao;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;import java.util.Properties;import org.apache.commons.beanutils.BeanUtils;import org.apache.log4j.Logger;public class BaseDao { private static String DRIVDR; private static String URL; private static String USER; private static String PWD; private static Connection connection; private static Properties properties = new Properties(); private static Logger logger = Logger.getLogger(BaseDao.class); private static PreparedStatement pst; private static ResultSet rs; private static final String CLASS_NOT_EXCEPTION = "驱动加载失败"; static { try { properties.load(BaseDao.class.getResourceAsStream("/jdbc.properties")); DRIVDR = properties.getProperty("jdbc.Driver"); URL = properties.getProperty("jdbc.url"); USER = properties.getProperty("jdbc.username"); PWD = properties.getProperty("jdbc.password"); Class.forName(DRIVDR); } catch (Exception e) { logger.debug(CLASS_NOT_EXCEPTION + e.getMessage()); } } /** * 通用的增删改 * * @param sql * @param args * @return */ public static int executeCommand(String sql, Object... args) { int m = 0; try { initPreparedStatement(sql, args); m = pst.executeUpdate(); } catch (Exception e) { logger.debug("执行增、删、该。错误。。请检查preparedStatement参数。。。"+e.getMessage()); } finally { closeAll(null, pst, connection); } return m; } private static PreparedStatement initPreparedStatement(String sql,Object...args){ try { pst=getConnection().prepareStatement(sql); if(args!=null){ for(int i=0;i T findById(String sql,Class clazz,Object...args){ T t = null; try { initPreparedStatement(sql, args); rs = pst.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); // 以上的代码:获取元数据(各个字段的数据类型) int count = metaData.getColumnCount(); // 获取字段的数量 if(rs.next()) { try { t = clazz.newInstance();// 利用反射自动创建对象的类型的对象 User.class User // u=new User(); for (int i = 1; i <= count; i++) { BeanUtils.copyProperty(t, metaData.getColumnName(i), rs.getObject(i)); // 自动获取各个字段的名称并获取该字段的值 } } catch (Exception e) { logger.debug("查询单个对象,错误。。请检查preparedStatement参数。。。。"+e.getMessage()); } } } catch (SQLException e) { logger.debug("查询失败。。。。。" + e.getMessage()); } return t; } /** * 通用的查询 * * @param sql * @param clazz * @param args * @return */ public static List findAll(String sql, Class clazz, Object... args) { List list = new ArrayList(100); T t = null; try { initPreparedStatement(sql, args); rs = pst.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); // 以上的代码:获取元数据(各个字段的数据类型) int count = metaData.getColumnCount(); // 获取字段的数量 while (rs.next()) { try { t = clazz.newInstance();// 利用反射自动创建对象的类型的对象 User.class User // u=new User(); for (int i = 1; i <= count; i++) { BeanUtils.copyProperty(t, metaData.getColumnName(i), rs.getObject(i)); // 自动获取各个字段的名称并获取该字段的值 } } catch (Exception e) { logger.debug("查询集合,错误。。。。。"+e.getMessage()); } list.add(t);// 将对象添加到集合中 } } catch (SQLException e) { logger.debug("查询失败。。。。。" + e.getMessage()); } return list; } public static Connection getConnection() { try { if (connection == null || connection.isClosed()) { connection = DriverManager.getConnection(URL, USER, PWD); } } catch (SQLException e) { logger.debug("获取connection失败,请检查配置文件!" + e.getMessage()); } return connection; } public static void closeAll(ResultSet rs, PreparedStatement pst, Connection conn) { if (rs != null) try { rs.close(); } catch (SQLException e) { logger.debug("关闭ResultSet错误。。。。。" + e.getMessage()); } if (pst != null) try { pst.close(); } catch (SQLException e) { logger.debug("关闭PreparedStatement错误。。。。。" + e.getMessage()); } if (conn != null) closeConnection(conn); } private static void closeConnection(Connection conn) { try { if (!conn.isClosed()) { conn.close(); } } catch (SQLException e) { logger.debug("关闭Connection错误。。。。。" + e.getMessage()); } finally { conn = null; } } public static void main(String[] args) { System.out.println(BaseDao.getConnection()); }}

取消

评论

python utf8_肿么在Python里使用UTF-8编码相关推荐

  1. python utf—8编码问题待解决

    执行python manage. py runserver后出现错误 utf-8编码出错 (result, consumed) = self._buffer_encode(data, self.err ...

  2. 欧几里得算法求最大公约数python,算法:欧几里得求最大公约数(python版)

    #欧几里得求最大公约数 #!/usr/bin/env python #coding -*- utf:8 -*- #iteration def gcd(a,b): if b==0: return a e ...

  3. 人生苦短,不光要用Python,还要在VSCode里用

    作者 | imbennyguo 出品 | CSDN博客 在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了. 它是微软出品的一款可扩展的轻量 ...

  4. .net安装_无需安装Python,就可以在.NET里调用Python库

    作者 |  Meinrad Recheis 译文来源  |  草根专栏(ID:Cgzl-Tech) Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行 ...

  5. python取特定年份的数据_python,_怎样用python提取不同股票csv里特定时间段的数据,python - phpStudy...

    怎样用python提取不同股票csv里特定时间段的数据 我有几千只股票的csv数据,需要算所有股票在特定时间段内的收益率. 但是数据里的日期信息并不统一,有的csv到2011年就没有了之后的信息了,有 ...

  6. python在工作上可以干什么-学习Python以后能在企业里工作中能做什么?

    原标题:学习Python以后能在企业里工作中能做什么? 学习Python以后能在企业里工作中能做什么? ​​大数据Python作为一门独特的语言在企业的应用十分重要.有人认为Python是一门新增的语 ...

  7. 【翻译】无需安装Python,就可以在.NET里调用Python库

    原文地址:https://henon.wordpress.com/2019/06/05/using-python-libraries-in-net-without-a-python-installat ...

  8. net能和python结合吗_如何不用安装python就能在.NET里调用Python库

    前言 Pythonnet这个屌爆的项目的出现,使得我们可以用一种新的方式,让C#可以和Python之间进行互操作.但是它的设置和部署可能有点问题,真的是这样吗? 本文我会介绍Python.Includ ...

  9. 人生苦短,不光要用 Python,还要在 VSCode 里用 | 原力计划

    作者 | imbennyguo 责编 | 胡巍巍 出品 | CSDN博客 在程序员圈子里,Visual Studio Code(以下简称VSCode)可以说是目前最火的代码编辑器之一了. 它是微软出品 ...

最新文章

  1. 知识驱动的推荐系统:现状与展望
  2. 强人总结的哄老婆秘籍
  3. 大约xib连接错误bug正确
  4. 数据采集标注、模型调参debug…这个神器统统都能搞定!
  5. android Word 显示文档结构图
  6. go语言调用c 的头文件 so,Golang生成共享库(shared library)以及Golang生成C可调用的动态库.so和静态库.a...
  7. 数据结构实验之栈三:后缀式求值
  8. StarLake:汇量科技云原生数据湖的探索和实践
  9. 使用EMR Spark Relational Cache跨集群同步数据
  10. html中鼠标左键自定义多级菜单,CSS多级菜单的实现代码
  11. 使用JSON.parse字符串转换json报错解决办法
  12. 漂浮广告代码、漂浮代码分析(讲解)
  13. android多开器工作原理,[原创]app隐藏大师绕过密码与多开分析
  14. 【Tool】资料搜索:百度网盘资料检索
  15. Docker问题:ERROR: Pool overlaps with other one on this address space
  16. MVDR最小方差无畸形相应波束形成器 Python 实现
  17. RxJava学习资源
  18. 机器学习算法——集成学习1(个体与集成)
  19. c语言在bmp图片上写字的函数,在bmp上写字
  20. Android Intent Service Usage

热门文章

  1. 你必须具有权限才能读取此对象_win10中随心所欲设置文件/文件夹访问权限,可以轻松做到,并不难...
  2. 对象属性的调用_PyQt5面向对象编程,类和类的继承
  3. 在python中使用csv库以字典格式读写csv文件
  4. python 函数教程:必选参数与默认参数
  5. 常见Python爬虫工具总结
  6. Python模块进阶、标准库、扩展库
  7. Python struct与小端存储
  8. Python: 复数的数学运算
  9. Python正则简单实例分析
  10. 通用串行总线集线器(Universal SerialBus HUB)什么是USB集线器(USB HUB)?什么是USB根集线器(USB ROOT HUB)?如何判断一个USB口是独立的还是集线器上的?