小影,数据库之!!jdbc便是这么简略-95号美食团体,世界上好吃的美食配方收集

两性故事 admin 2019-05-21 271 次浏览 0个评论
网站分享代码

一、JDBC

JAVA Database Connectivit金风科技y java 数据库衔接.

JDBC(Java DataBase Conn小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集ectivity,java数据库衔接)是一种用兔小贝儿歌于履行SQL句子的Java 好心境图片API,可认为多种联系数据库供给一致拜访,它由一组用Java言语编写的类和接口组成。JDBC供给了一种基准,据此能够构建更高档的东西和接口,使数据库开发人兄妹一家亲员能够编写数据库应用程序,一起,JDBC也是个商标名。

二、为什么会呈现JDBC

SUN公司供给的一种数据库拜访规矩、标准, 因为数据库品种较多,而且java言语运用比较广泛,sun公司就供给了一种标准,让其他的数据库供给商去完成底层的拜访规矩。 咱们的java程序只需运用sun公司供给的jdbc驱动即可。

三、数据库驱动

咱们装置好数据库之后,咱们的应用程序也是不能直接运用数据库的,必需求经过相应的数据库驱动程序,经过驱动程序去和数据库打交道。其实也就是数据库厂商的JDBC接口完成,即对Connection等接口的完成类的jar文件。


四、常用接口

1.Driver接口

Driver接口由数据库厂家女孩白袜供给,作为java开发人员,只需求运用Driver接口就能够了。在编程中要衔接数据库,有必要先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载办法。如:

  • 装载MySql驱动:Class.forName("com.mysql.j迪拜王子dbc.Driver");
  • 装载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");

2.C杭州景点onn泰顺天气预报ection接口

Connection与特定数据库的衔接(会话),在衔接上下文中履行sql句子并回来成果。DriverManager.getConnection(url, user, password)办法树立在JDBC URL中界说的数据库Connection衔接上。

  • 衔接MySql数据库:Connection conn = DriverManager.getC小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集onnection("jdbc:mysql://host:port/database", "user", "password");
  • 衔接Oracle数据库:Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");
  • 衔接SqlServer数据库:Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database", "user", "password");

常用办法:

  • createStatement():创立向数据库发送sql的statement目标。
  • prepareStatement(sql) :创立向数据库发送预编译sql的PrepareSatement目标。
  • prepareCall(sql):创立履行存储进程的callableStatement目标。
  • setAutoCommit(boolean autoCommit):设置业务是否主动提交。
  • commit() :在链接上提小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集交业务。
  • rollback() :在此链接上回滚业务。

3.Statement接口小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集

用于履行静态SQL句子并回来它所生成成果的目标。

三种Statement类:

  • Statement:由createStatement创立,用于发送简略的SQL句子(不带参数)。
  • PreparedStatement :承继自Statement接口,由preparedStatement创立,用于发送含有一个或多个参数的SQL句子。PreparedStatement目标比Statement目标的功率更高,而且能够避免SQL注入,所以咱们一般都运用PreparedStatement。
  • CallableStatement:承继自神灵变PreparedStatement接口,由办法prepareCall创立,用于调用存储进程。

常用Statement办法:

  • execute(String sql):运转句子,回来是否有成果集
  • executeQuery(String sql):运转select句子,回来ResultSet成果集。
  • executeUpdate(String sql):运转insert/update/delete操作,回来更新的行数。
  • addBatch(String sql) :把多条sql句子放到一个批处理中。
  • executeBatch():向数据库发送一批sql句子履行。

4.ResultSet接口

ResultSet供给检索不同类型字段的办法,常用的有:

  • getString(int index)、getString(String columnName):取得在数据库里是varchar、char等类型的数据目标。
  • getFloat(int index)、getFloat(String columnName):取得在数据库里是Float类型的数据目标。
  • getDate(int index)、getDate(String columnName):取得在数据库里是Date类型的数据。
  • getBoolean(int index)、getBoolean(String columnName):取得在数据库里是Boolean类型的数据。
  • getObject(int index)、getObject(String columnName):获取在数据库里恣意类型的数据。

ResultSet还供给了对成果集进行翻滚的办法:

  • next():移动到下一行
  • Previous():移动到前一行
  • absolute(int row):移动到指定行
  • beforeFirst():移动resultSet的最前面。
  • afterLast() :移动到resultSet的最后边。

运用后顺次封闭目标及衔接:ResultSet → Statement → Connection

五、运用JDBC的根本过程

1. 注册驱动

DriverManager.registerDriver(new com.mysql.jdbc.Driver());


2. 树立衔接

//DriverManager.getConnection("jdbc:mysql://localhost/test?user=SIHAI&password=SIHAI");
//2. 树立衔接 参数一: 协议 + 拜访的数据库 , 参数二: 用户名 , 参数三: 暗码。
conn = DriverManager.getConnection("jdbc:mysql://localhost/s小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集tudent", "root", "root");

3. 创立statement休克

//3. 创立sta邹友开与祖海结婚照tement , 跟数据库打交道,必定需求这个目标
st = conn.createStatement();

4. 履行sql ,得到ResultSet

//4. 履行查询 , 得到成果集
String sql = "select * from t_stu";
rs = st.executeQuery(sql);

5. 遍历成果集

 //5. 遍历查询每一条记载
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age")李修贤;
System.out.println("id="+id + "===name="+name+"==age="+age);
}

6. 开释资源

 if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { } // ignore
rs = null;
}

六、JDBC 东西类构建

1. 资源开释作业的整合

/**
* 开释资源
* @param conn
* @param st
* @param rs
*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}
private static void closeSt(Statement st){
try {
ifhyde(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}
private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}

2. 驱动防二次注册

/**
* 获取衔接目标
* @return
*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(driverClass);
//静态代码块 ---> 类加载了,就履行。 java.sql.DriverManager.registerDriver(new Driver深圳旅行攻略());
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
//2. 树立衔接 参数一: 协议 + 拜访的数据库 , 参数二: 用户名 , 参数三: 暗码。
conn = DriverManager.getConnection(url, name, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}

3. 运用properties装备文件

  • 在src底下声明一个文件 xxx.properties ,里边的内容吐下:
 driverClass=com.mysql.jdbc.Driver
url=老有所依jdbc:mysql://localhost/student
name=root
password=root
  • 在东西类里边,运用静态代码块,读取特点
static{
try {
//1. 创立一个特点装备目标
Properties properties = new Properties();
InputStream is = new FileInputStream("jdbc.properties"); //对应文件坐落工程根目录
//运用类加载器,去读取src底下的资源文件。 后边彝在servlet //对应文件坐落src目录底下
//InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
//导入输入流。
properties.load(is);
//读取特点
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
name = properties.getProperty("name");
password = properties.getProperty("password");
} catch (Exception e) {
e.printStackTrace();
}
}

源代码如下:

public class JDBCUtil {

static String driverClass = null;

static String url = null;

static String name = null;

static String password= null;

static{

try {

//1. 创立一个特点装备目标

Properties properties = new Properties();

InputStream is = new FileInputStream("jdbc.properties");

//运用类加载器,去读取src底下的资源文件。 后边在servlet

// InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");

//导入输入流。

properties.load(is);

//读取特点

driverClass = properties.getProperty("driverClass");

url = properties.getProperty("url");

name = properties.getProperty("name");

password = properties.getProperty("password");

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 获取衔接对美媛象

* @return

*/

public static Connection getConn(){

Connection conn = nul小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集l;

try {

Class.forName(driverClass);

//静态代码块 ---> 类加载了,就履行。 java.sql.DriverManager.register魔力宝贝Driver(new Driver());

//DriverManager.registerDriver(new com.mysql.jdbc.Driver());

//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

//2. 树立衔接 参数一: 协议 + 拜访的数据库 , 参数二: 用户名 , 参数三: 暗码小影,数据库之!!jdbc就是这么简略-95号美食集体,世界上好吃的美食配方搜集。

conn = DriverManager.getConnection(url, name, password);

} catch (Exception e) {

e.printStackTrace();

}

return conn;

}

/**

* 开释资源

* @param conn

* @param st

* @param rs

*/

public static void release(Connection conn , Statement st , ResultSet rs){

closeRs(rs);

closeSt(st);

closeConn(conn);

}

private static void closeRs(ResultSet rs){

try {

if(rs != null){

rs.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

rs = nu唐医泡段ll;

}

}

private static void closeSt(Statement st){

try {

if(st != null){

st.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

st = null;

}

}

private static void closeConn(Connection conn){

try {

if(conn != null){

conn.close();

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

conn = null;

}

}

}

你有必要很尽力,然后看起来才毫不费力!

点个赞支撑小编!不知道你们有没有收成呢?

重视我每天都有干货,看下期哦。