JDBC

一,简介

JDBC即 Java Date Base Connectivity
JDBC是一种可用于执行SQL语句的Java API,是数据库和Java应用程序的纽带。
JDBC主要功能:
1.与数据库建立连接
2.执行sql语句,并返回结果集
3处理数据库返回的结果

二,开发步骤

1.建立工程
2.导入所需jar包
3.建立一个Class类
4.代码开发步骤 建立一个方法
	1.加载驱动
	2.建立连接
	3.得到执行sql语句的Statement对象
	4.执行sql语句,并返回结果集
		a.查询返回的是ResultSet  
		b.增、删、改返回的是int类型,就是执行成功了多少条
	5.处理结果集
	6.关闭资源

三,数据库连接步骤

1,加载驱动

Class.forName("driver ")

Oracle
driver= “oracle.jdbc.OracleDriver”

SQL Server( 可以通过crtl+shift+t,然后输入sqlserverDrive实现)
driver= “com.microsoft.sqlserver.jdbc.SQLServerDriver”

MySql
driver= “com.mysql.jdbc.Driver”;

2,建立连接

Connection conn=DriverManager.getConnection
("jdbc:mysql://localhost:3306/mysql02","root","123456");

//其中"jdbc:mysql://localhost:3306/mysql02"为url,3306为MySql数据库的端口号,mysql02为数据库名。
// root为数据库用户名,123456为数据库密码

Oracle
url=jdbc:oracle:thin:@localhost:1521:XE

SQL Server
url=“jdbc:sqlserver://localhost:1433;DatabaseName=test”

MySql
url = “jdbc:mysql://localhost:3306/mysql02”;

3,通过Connection得到执行sql语句的Statement对象

Statement stm=conn.createStatement();

4,通过Statement去执行SQL语句,并返回结果集

ResultSet rs=stm.executeQuery("SELECT * FROM emp");//查询
int i=stm.executeUpdate("DROP TABLE emp");//增删改

5,处理结果集

//1,查询
while(rs.next()) {
	System.out.println(rs.getInt(1));
}//getint(1)的意思是数据表中第一列数据,因为是整型所以用int
//next()从查询出的表的第一行开始,一次增加,当第一次循环,得到的是数据查询结果的第一行的第一列,第二次增加,得到的是第二行的第二列。

6,关闭资源,一定从最下面的开始

rs.close();//只有查询才有
stm.close();
conn.close();

注:

1,关于ResultSet的一些介绍:

ResultSet:结果集对象,封装查询结果
在这里插入图片描述
方法:
(1)next():游标向下移动一行
(2)getXXX(参数):获取数据类型

  • XXX:代表数据类型 如:int getInt(),String getString();
  • 参数:
    1.int:代表列的编号,从1开始 如:getString(1)
    2.string:代表列的名称。 如:getDouble(“balance”)

2,关于executeUpdate和executeQuery的介绍
(1)executeQuery
executeQuery()方法是在PreparedStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象,
(2)executeUpdate
该方法是在PreparedStatement对象中执行SQL语句,该语句必须是一个SQL数据操作语言,例如INSERT, UPDATE,DELETE等语句,或者是没有返回内容的SQL语句.其最终返回值是更新的条数。

四,示例(Mysql数据库)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;

public class JdbcDemo01 {
@Test
public void demo01() throws ClassNotFoundException, SQLException {
	//1,加载驱动
	     Class.forName("com.mysql.jdbc.Driver");
	//2,建立连接
	     Connection conn=DriverManager.getConnection
			("jdbc:mysql://localhost:3306/mysql02","root","123456");
    //3,通过Connection得到执行sql语句的Statement对象
	     Statement stm=conn.createStatement();
	//4,通过Statement去执行SQL语句,并返回结果集
	      ResultSet rs=stm.executeQuery("SELECT * FROM emp");
	//5,处理结果集
	     while(rs.next()) {
		   System.out.println(rs.getInt(1));
	      }
	//6,关闭资源,一定从最下面的开始
	     rs.close();
	     stm.close();
	    conn.close();
	 }
   }

执行结果:

为数据库中mysql02 中的emp表的第一列属性

PrepareStatement :防止SQL语句的注入。

/*
	 * 查询
	 */
public void login(String name,int id) {
	Connection conn=null;
	PreparedStatement pstm=null;
	ResultSet rs=null;
	try {
	//1,加载驱动
		Class.forName( "com.mysql.jdbc.Driver");
	//2,建立连接
		conn=DriverManager.getConnection(
				"jdbc:mysql://localhost:3306/user","root","123456");
	//3,处理预编译sql语句
		//"select*from user where name='曹操' and id=101"
		//?相当于占位符
		pstm=conn.prepareStatement("select*from user where name=? and id=?");
	//4,给占位符赋值
		pstm.setString(1, name);
		pstm.setInt(2, id);
	//5,执行预编译sql语句并返回结果集
		rs=pstm.executeQuery();
	//6,循环遍历
		while(rs.next()) {
			System.out.println(rs.getString(1));
			System.out.println(rs.getString(2));
		}
	} catch (Exception e) {
	e.printStackTrace();
	}finally {
//7,关闭资源
		try {
			if(rs!=null) {
				rs.close();}
			if(pstm!=null) {
				pstm.close();}
			if(conn!=null) {
				conn.close();}
		} catch (Exception e2) {
			e2.printStackTrace();			
		}
	}
}
}

连接池

详情参照spring JdbcTemplate

package e_api;

import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.jdbc.core.JdbcTemplate;

public class TestDemo {
	
	public static void main(String[] args) {
		//1,创建数据源(连接池)
		BasicDataSource dataSource=new BasicDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/mmsi");
		dataSource.setUsername("root");
		dataSource.setPassword("root");
		System.out.println("数据库连接成功");
		//2,创建模板		
		JdbcTemplate jdbcTemplate=new JdbcTemplate();
		jdbcTemplate.setDataSource(dataSource);
		//3,通过api操作		
		jdbcTemplate.update("insert into t_user(username,password) values(?,?);", "tom","998");
		System.out.println("数据库插入成功");
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值