JDBC(java数据库连接)(一)

JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力

JDBC  API 是Sun公司提供的

内容:供程序员调用的接口,集成在Java.sql和javax.sql包中,

如:

DriverManager

Connection接口

Statement接口

ResultSet接口

 

DriverManager:是Sun公司提供

               作用:管理各种不同的JDBC驱动

 

JDBC驱动:是数据库厂商提供

           作用:负责连接各种不同数据库

Connection:负责连接数据库并且承担传送数据的任务

Statement:由Connection产生,负责执行SQL语句

ResultSet:负责保存Statement执行后产生的查询结果

PreparedStatement接口:Statement接口的子接口,也由Connection产生.同样负责执行sql语句.

使用statement安全性差,存在SQL注入

PreparedStatement接口:继承于Statement接口

与Statement接口相比,具有高安全性,高性能,高可读性和高维护性的优点。

使用Java方式连接数据库:

由JDBC驱动直接访问数据库

优点:100% Java,快又可跨平台

缺点:访问不同的数据库需要下载专用的JDBC驱动

 

JDBC访问数据库的步骤

1)加载JDBC驱动

使用Class,forName()方法将给定的JDBC驱动类加载到java虚拟机中

eg:    Class.forName("JDBC驱动类的名称");

2)与数据库建立连接

DriverManager类是JDBC的管理层.DrivernManager类跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接.

eg:    Connection con=DriverManager.getConnection(数据库连接字符串, 数据库用户名, 密码);

创建Statement或preparedStatement对象

3)发送SQL语句,并得到返回结果

一旦建立连接,就使用该连接创建Statement接口的对象,并将sql语句传递给它所连接的数据库

 Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute   

ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。  

int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   

DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   

execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的 语句。   

   eg :  

ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   

int count = stmt.executeUpdate("INSERT INTO ...") ;  

boolean flag = stmt.execute(String sql) ;   

4)处理返回结果

   两种情况:   

执行增加  修改  更新返回的是本次操作影响到的记录数。   

执行查询返回的结果是一个ResultSet对象。   

ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。   

使用结果集(ResultSet)对象的访问方法获取数据:   

 

 

import java.sql.*;
public class JDBC {
public static final String url="jdbc:sqlserver://localhost:1433;databaseName=MySchool";
public static final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public static final String username="sa";
public static final String password="";
public static Connection getConnection() throws Exception{
//注册驱动
Class.forName(driver);
Connection con=DriverManager.getConnection(url, username, password);
return con;

}

}

import java.sql.*;

/**
* 连接数据库执行增加 修改 删除命令
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) throws Exception {
//连接数据库
Connection con=JDBC.getConnection();
/**
* 准备sql语句 添加
*/
//String sql="insert into Student values(4,'ni')";
/**
* 修改
*/
//String sql="update Student set Name='张飞' where Name='ni'";
/**
* 删除
*/
String sql="delete from Student where No=2 ";
//创建命令对象
Statement stmt = con.createStatement();
//返回受影响的行数
int count = stmt.executeUpdate(sql);
if(count>0){
System.out.println("成功");
}else{
System.out.println("失败");
}
}

}

原文地址:https://www.cnblogs.com/sujulin/p/6670339.html