JDBC---bai
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement; //自定义jdbc工具类。
//目的是简化jdbc开发。
public class JDBCUtil {
public static String driver="com.mysql.jdbc.Driver";
public static String url = "jdbc:mysql://127.0.0.1/library?characterEncoding=utf-8";
public static String user = "root";
public static String password = "root";
//获取1条数据库的连接
private static Connection getConnection()
{
Connection con = null; //返回的连接
try {
//1 加载驱动
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//2 获取连接
} catch (Exception e)
{
e.printStackTrace();
}
return con;
}
//查询:简单查询,不含?的sql语句
public static ResultSet doQuery(String sql)
{
return doQuery(sql,null);
} //查询:复杂查询,含有多个?的sql语句
public static ResultSet doQuery(String sql,String... ps)
{
//1 获取连接
Connection con = getConnection(); //调用上面的方法,获取1个连接
if(con==null)
{
System.out.println("获取连接失败!");
return null; //提前终止本方法代码
} ResultSet rs = null;
try {
//2执行查询
PreparedStatement psm = con.prepareStatement(sql);
//通过for循环,访问参数数组,给psm逐个设置可变参数!!
if(ps!=null) //只有可变参数不为空,才进行?赋值
{
for(int i=0;i<ps.length;i++)
{
psm.setString(i+1, ps[i]);//将第i个可变参数,设置到第i+1个问号
}
}
rs = psm.executeQuery();
} catch (Exception e)
{
e.printStackTrace();
}
//3 返回结果.注意,不能关闭,否则结果用不了
return rs;
} //修改(包含添加,删除,修改,删表,建表):返回sql影响的行数.不含?的sql语句
public static int doUpdate(String sql)
{
return doUpdate(sql,null);
} //修改(包含添加,删除,修改,删表,建表):返回sql影响的行数.含?有的sql语句
public static int doUpdate(String sql,String... ps)
{
//1 获取连接
Connection con = getConnection(); //调用上面的方法,获取1个连接
if(con==null)
{
System.out.println("获取连接失败!");
return 0; //提前终止本方法代码
} int result = 0;
PreparedStatement psm = null;
try {
//2执行查询
psm = con.prepareStatement(sql);
//通过for循环,访问参数数组,给psm逐个设置可变参数!!
if(ps!=null)
{
for(int i=0;i<ps.length;i++)
{
psm.setString(i+1, ps[i]);//将第i个可变参数,设置到第i+1个问号
}
}
result = psm.executeUpdate();
} catch (Exception e)
{
e.printStackTrace();
}
finally
{
close(null,psm,con); //修改完毕,记得关闭资源
}
//3 返回结果.注意,不能关闭,否则结果用不了
return result; } //关闭资源。三个参数的版本
public static void close(ResultSet rs,Statement sm,Connection con)
{
try {
if (rs != null)
rs.close();
if (sm != null)
sm.close();
if (con != null)
con.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
//关闭资源。一个参数的版本
public static void close(ResultSet rs)
{
Statement sm = null;
Connection con = null;
try {
if (rs != null)
{
sm = rs.getStatement();
rs.close();
} if (sm != null)
{
con = sm.getConnection();
sm.close();
}
if (con != null)
con.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
JDBC---bai的更多相关文章
- Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
- 玩转spring boot——结合AngularJs和JDBC
参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...
- [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- JDBC增加删除修改
一.配置程序--让我们程序能找到数据库的驱动jar包 1.把.jar文件复制到项目中去,整合的时候方便. 2.在eclipse项目右击"构建路径"--"配置构建路径&qu ...
- JDBC简介
jdbc连接数据库的四个对象 DriverManager 驱动类 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 ...
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- FineReport如何用JDBC连接阿里云ADS数据库
在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...
- JDBC基础
今天看了看JDBC(Java DataBase Connectivity)总结一下 关于JDBC 加载JDBC驱动 建立数据库连接 创建一个Statement或者PreparedStatement 获 ...
- Spring学习记录(十四)---JDBC基本操作
先看一些定义: 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1.core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJ ...
随机推荐
- Luogu-4774 [NOI2018]屠龙勇士
这题好像只要会用set/平衡树以及裸的\(Excrt\)就能A啊...然而当时我虽然看出是\(Excrt\)却并不会...今天又学了一遍\(Excrt\),趁机把这个坑给填了吧 现预处理一下,找出每条 ...
- openssl——初了解
Openssl OpenSSL是一个开源的.用于SSL/TLS协议的加密工具,是互联网加密传输的核心基础组件,由加拿大的Eric Yang等发起编写的,当前互联网安全传输的大部分场景(如HTTPS)均 ...
- QT 学习记录:渐变-QLinearGradient,QRadialGradient,QConicalGradient)
http://blog.csdn.net/wangwei890702/article/details/8552482 QT:渐变 渐变,是指逐渐的,有规律性的变化,是一种规律性很强的现象.Qt提供了一 ...
- 写2个线程,一个打印1-52,一个打印A-Z,打印顺序是12A34B。。。(采用同步代码块和同步方法两种同步方法)
1.同步方法 package Synchronized; /************************************同步方法****************************** ...
- SPOJ1825 FTOUR2 - Free tour II
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- iso不支持document事件
ios safari游览器除了a.input.button等不支持document事件委托?<body>加上这个样式即可 <style> .clickable-div { cu ...
- 理解collate Chinese_PRC_CI_AS
我们在create table时经常会碰到这样的语句,例如:password nvarchar(10)collate chinese_prc_ci_as null,那它到底是什么意思呢?不妨看看下面: ...
- 目标检测 — NMS
1.非极大值抑制步骤 非极大值抑制算法(Non-maximum suppression,NMS)在目标检测中经常用到.我们的检测算法可能对同一目标产生多次检测的结果,非极大值抑制算法可以保证每个目标只 ...
- python 百题计划
一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...
- Chrome MarkDown Preview Plus
/************************************************************************** * Chrome MarkDown Previe ...