java(jdbc)

1.JDBC入门

a.介绍:使用java程序发送sql语句到数据库服务器端执行,这叫用到了JDBC技术。jdbc是Oracle-          Sun 公司设计的一套专门用于java程序操作数据库的接口。

b.使用jdbc发送sql条件

连接mysql数据库数据库主机端口、数据库、用户名、数据库密码、连接的数据库。

c.核心api

Driver接口: 数据库驱动程序的接口,所有具体数据库厂商需要的驱动程序需要实现此接口。

Connectionconnect(String url, Properties info)  用于获取数据库连接

Connection接口:与具体的数据库的连接对象。

StatementcreateStatement()    创建一个静态sql语句对象

PreparedStatementprepareStatement(String sql)  创建预编译的sql语句对象

CallableStatementprepareCall(String sql)   创建存储过程的sql语句对象

Statement接口:用于执行静态 SQL 语句

intexecuteUpdate(String sql)  执行更新操作的sql语句                                                                     (create/alter/drop) DDL语句

(insert/update/delete)DML语句

ResultSetexecuteQuery(String sql)  执行查询操作的sql语句

(select)(DQL查询语句)

PreparedStatement接口:用于执行预编译的SQL语句(是Statement的子接口)

intexecuteUpdate()  执行更新操作的sql语句

ResultSetexecuteQuery()  执行查询操作的sql语句

CallableStatement接口:用于执行 SQL 存储过程的接口(是PreparedStatement子接口)

ResultSetexecuteQuery()  执行存储过程的sql语句

ResultSet接口:结果集对象。 存储所有数据库查询的结果,用该对象进行数据遍历。

booleannext():把光标移动到下一行。如果下一行有数据,返回true,如果没有下一行数                      据,返回false。

getXXX(列索引|列字段名称): 获取字段的数据

public class DriverDemo {

private static String url = "jdbc:mysql://localhost:3306/day20";

//jdbc协议:mysql协议://主机地址:端口号/需要连接的数据库名称

private static String user = "root";

private static String password="root";

public static void main(String[] args) throws Exception {

/**

* java程序连接mysql数据库

* 1.mysql数据库的主机地址

* 2.端口号

* 3.用户名

* 5.密码

* 6.需要连接的数据库

*

* 先使用java程序连接我们的数据库,需要一个连接对象Connection

*/

//conn1();

//conn2();

conn3();

}

private static void conn3() throws Exception {

//注册驱动,mysql驱动程序的Driver实现类已经在静态代码块中注册好了驱动,只需要将              Driver实现类加载到我们的内存中,static代码块就会自动执行

//注册驱动

Class.forName("com.mysql.jdbc.Driver");

//获取java连接数据库的对象

Connection conn = DriverManager.getConnection(url, user, password);

//打印这个连接对象

System.out.println(conn);

}

private static void conn2() throws Exception {

//使用驱动管理类,连管理我们的驱动程序,并获取连接

//1.注册驱动

//public static void registerDriver(Driver driver)throws SQLException

Driver driver = new com.mysql.jdbc.Driver();

DriverManager.registerDriver(driver);

//获取连接

//public static Connection getConnection(String url,String user,String password)throws SQLException

Connection conn = DriverManager.getConnection(url, user, password);

//打印这里数据库连接

System.out.println(conn);

}

//直连

private static void conn1() throws SQLException {

//创建一个驱动类对象Driver

Driver driver = new com.mysql.jdbc.Driver();

//获取java连接数据库的连接

//Connection connect(String url, Properties info)throws SQLException

//创建一个properties集合

Properties prop = new Properties();

prop.setProperty("user", user);

prop.setProperty("password", password);

Connection conn = driver.connect(url, prop);

//打印这个连接对象,如果连接对象不为空,就说明我们已经成功获取到了连接对象

System.out.println(conn);

}

}

2.Statement对象执行SQL操作

public class Demo {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";

public static void main(String[] args){

Connection conn = null;

Statement stmt = null;

try {

//注册驱动

Class.forName("com.mysql.jdbc.Driver");

//通过驱动管理类获取数据库连接

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

//创建语句执行者

stmt = conn.createStatement();

//int executeUpdate(String sql)

//throws SQLException执行给定 SQL 语句,

//该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句       (如 SQL DDL 语句)。

String sql = "CREATE TABLE student("+

"id INT,"+

"NAME VARCHAR(20),"+

"age INT"+

");";

//使用语句执行者执行创建的sql语句

int count = stmt.executeUpdate(sql);

//打印一下影响的结果

System.out.println(count);

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException();

}finally{

//释放资源

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

3.执行DML操作

public class Demo2 {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";

public static void main(String[] args) {

//testInsert();//给数据库添加一条记录

//testUpdate();//修改数据库中的一条数据

testDelete();

}

private static void testDelete() {

//需求:将刘德华改为岳云鹏

Connection conn = null;

Statement stmt = null;

try{

//2.获取连接对象

conn  =JDBCUtil.getConn();

//3.准备sql

String sql = "DELETE FROM student WHERE id=1;";

//4.获取语句执行者

stmt = conn.createStatement();

//5.发送兵长执行sql

int count = stmt.executeUpdate(sql);

//打印影响的行数

System.out.println(count);

}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

JDBCUtil.close(conn, stmt, null);

}

}

private static void testUpdate() {

//将刘德华改为岳云鹏

Connection conn = null;

Statement stmt = null;

try{

//1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

//2.获取连接对象

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

//3.准备sql

String sql = "UPDATE student SET NAME=‘岳云鹏‘ WHERE id=1;";

//4.获取语句执行者

stmt = conn.createStatement();

//5.发送兵长执行sql

int count = stmt.executeUpdate(sql);

//打印影响的行数

System.out.println(count);

}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

private static void testInsert() {

//专门测试添加功能

Connection conn = null;

Statement stmt = null;

try{

//注册驱动

Class.forName("com.mysql.jdbc.Driver");

//获取连接

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

//定义sql

String sql = "INSERT INTO student VALUES(1,‘刘德华‘,50);";

//获取语句执行者

stmt = conn.createStatement();

//使用语句执行者发送并执行sql语句,并返回影响的行数

int count = stmt.executeUpdate(sql);

System.out.println(count);

}catch(Exception e){

e.printStackTrace();

throw new RuntimeException();

}finally{

//释放资源

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

4.执行DQL查询操作

public class Demo3 {

public static void main(String[] args) {

//定义一个连接对象和一个语句执行者

Connection conn  =null;

Statement stmt = null;

ResultSet rs = null;

try{

conn = JDBCUtil.getConn();

//定义sql

String sql = "SELECT * FROM student;";

//获取语句执行者对象

stmt = conn.createStatement();

//执行DQL查询语句

//ResultSet executeQuery(String sql)

//throws SQLException执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

rs = stmt.executeQuery(sql);

//ResultSet是一个结果集

/*//判断有没有下一行数据

if (rs.next()) {

//说明有下一行数数据

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}

if (rs.next()) {

//说明有下一行数数据

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}

if (rs.next()) {

//说明有下一行数数据

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}

if (rs.next()) {

//说明有下一行数数据

System.out.println(rs.getInt(1)+"--"+rs.getString(2)+"--"+rs.getInt(3));

}

if (rs.next()) {

//说明有下一行数数据

//使用字段名称获取字段的每一个数据

while (rs.next()) {

//当我们使用字段名称去获取字段数据的时候,字段名称是不区分大小写

System.out.println(rs.getInt("ID")+"--"+rs.getString("NAME")+"--                              "+rs.getInt("AGE"));

}

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtil.close(conn, stmt, rs);

}

}

}

5.JDBC工具类的抽取

public class JDBCUtil {

private static String url = "jdbc:mysql://localhost:3306/day20";

private static String user = "root";

private static String password = "root";

static{

//随着类的加载而夹在

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//获取连接

public static Connection getConn(){

//注册驱动

try {

Connection conn = DriverManager.getConnection(url, user, password);

return conn;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

throw new RuntimeException();

}

}

//释放资源

public static void close(Connection conn,Statement stmt,ResultSet rs){

if (conn!=null) {

try {

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (stmt!=null) {

try {

stmt.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if (rs!=null) {

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

时间: 2024-10-07 09:20:09

java(jdbc)的相关文章

重新认识java(五) ---- 面向对象之多态(向上转型与向下转型)

多态,大概每个人都知道.但是,又有几个人真的理解什么是多态.多态有哪些细节呢?如果你看到这篇文章的名字,脑海中对多态没有一个清晰的概念,不妨点进来看看,也许会有收获. 什么是多态 简单的理解多态 多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力.比如说,有一杯水,我不知道它是温的.冰的还是烫的,但是我一摸我就知道了.我摸水杯这个动作,对于不同温度的水,就会得到不同的结果.这就是多态. 那么,java中是怎么体现多态呢?我们来直接看代码: public class Water { pu

恶补java(十)---泛型与集合的再学习

其余的就不多说了,一切都在代码中 package com.gc.generic; /** * JDK5 之前集合对象使用问题: * 1.向集合添加任何类型对象 * 2.从集合取出对象时,数据类型丢失,使用与类型相关方法,强制类型转换 * 存在安全隐患 * * ***************************** * * JDK5中的泛型:允许程序员使用泛型技术限制集合的处理类型 * List<String> list=new ArrayList<String>(); * 从而

重新认识java(四) — 组合、聚合与继承的爱恨情仇

有人学了继承,认为他是面向对象特点之一,就在所有能用到继承的地方使用继承,而不考虑究竟该不该使用,无疑,这是错误的.那么,究竟该如何使用继承呢? java中类与类之间的关系 大部分的初学者只知道java中两个类之间可以是继承与被继承的关系,可是事实上,类之间的关系大体上存在五种-继承(实现).依赖.关联.聚合.组合. 接下来,简单的分析一下这些关系. 继承(实现) 对于类来说,这种关系叫做继承,对于接口来说,这种关系叫做实现.继承上一篇文章已经详细的讲解过了,至于实现,我想大家也都知道是怎么回事

1.初识Java(总结)

外层框架 =      public class Hello world Java程序入口方法,地址控制台console应用程序  =      public static void main(String[] args){ Java虚拟机运行程序的时候首先找到的就是(main方法),跟c语言里的main()函数的作用一样的,只有main()方法的Java虚拟机欲行,可理解为规格的格式 Ststem.out.println("       "); 对于里面的参数及修饰符 public:

新手学JAVA(三)----StringBuilder类

上一篇文章新手学JAVA(二)----String类与StringBuffer类的区别中了解到,String的值是不可变的,这就导致 每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变 类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象. StringBuffer类和StringBuilder类功能基本相似.算是两个双胞胎. 下面主要说两点 第一点  线程安全 StringBuffer  线程安全

Windows 下 java(JDK)的安装和环境变量的配置

1.下载JDK安装包: http://www.oracle.com/technetwork/java/javaee/downloads/index-jsp-140710.html 2.安装JDK. 3.环境变量中新建: JAVA_HOME =D:\worksoft\Java\jdk1.6.0_20; 4.环境变量中新建: CLASSPATH = .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 5.修改环境变量Path,在其后添加: %JAV

将行数据转换成Java(POJO)对象

工作中经常会遇到将行数据转换成Java(POJO)对象的场景,其中关于字段校验和类型转换的处理繁琐而冗余,对于有代码洁癖的人着实不能忍.这里分享下自己封装的工具代码,也许能够帮助你更简单地完成此类任务. 先将以下五个文件加入你豪华午餐(项目??)中 FieldItem: /** * * @author lichmama * */ public class FieldItem { public int getIndex() { return index; } public void setInde

It&#39;s Java(1)

public class Square { private double side; //成员变量side,类型double public void setSide(double a) { side = a; // 设置正方形的边长,无返回值 } public double getSide() { return side; // 返回正方形自身边长 } public double getPerimeter() { return 4*side; // 返回正方形周长 } public double

关于Java(JDBC介绍)

JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的. JDBC 简单功能 连接数据源,如数据库 传给数据库查询和更新指令 获取并处理数据库响应查询返回的结果 示例代码: public void connectToAndQueryDatabase(String username, String password) { Connection con = DriverManager.getConnection( "jdbc:myDriver:myDatabase",