JDBC中API(DriverManager ,和Connection,statement介绍)

一:DriverManager(驱动管理类)

1注册驱动

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

提示Mysql 5之后的驱动包,可以省略注册驱动的步骤

自动加载jar包中META-INF/Services/java.sql.Driver文件中的驱动类

2获取连接

getConnection(String url,String User,String password)

参数

url:连接路径

语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2.....

例如:

	String url="jdbc:mysql://127.0.0.1:3306/school";//school为你自己的数据库名称

细节:

如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写

String url="jdbc:mysql:///school";//school为你自己的数据库名称

配置useSSL=false 参数,禁用安全连接方式,解决警告提示

String url="jdbc:mysql:///school?useSSL=false";//school为你自己的数据库名称

二:Connection(数据库连接对象)

1获取执行sql的对象

普通执行sql对象

Statement createStatement()

预编译Sql的执行sql对象:防止sql注入

PreparedStatement  prepareStatement(sql)

执行存储过程的对象

CallableStatement  prepareCall(sql)

2管理事务

Mysql事务管理

开启事务:Begin;/Start Transaction;

提交事务: commit

回滚事务 :rollback;

mysql默认自动提交事务

JDBC事务管理:connection接口定义3个对应的方法

开启事务 setAutoCommit(boolean autoCommit) true为自动提交事务,false为手动提交事务,即开启事务

提交事务:commit()

回滚事务:rollback()




import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Test2 {
	//事务模拟
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		String url="jdbc:mysql:///school"; //school为你的数据名称
		String userName="root";
		String passWord="666";
		Connection con=DriverManager.getConnection(url, userName, passWord);		
		try {
			con.setAutoCommit(false);//开启事务
			String sql="UPDATE employee set e_money=3000 WHERE  e_name='张三'";
			Statement st=con.createStatement(); //获取执行对象
			int count =st.executeUpdate(sql); //执行sql
			
			String sql2="UPDATE employee set e_money=3000 WHERE  e_name='李四'";
			int count2=st.executeUpdate(sql2);
			System.out.println(count);
			System.out.println(count2);
			con.commit();//如果正确就提交事务
		} catch (Exception e) {
			con.rollback();//出错回滚事务
			e.printStackTrace();
		}
	

	}

}

三:Statement

执行sql语句

int  executeUpdate(sql) :执行DML,DDL语句

返回值:DML语句影响行数,,DML可以根据返回值是否大于0,判断是否执行成功;  DDL语句执行后,执行成功也可能返回0

ResultSet  executeQuery(sql) :执行 DQL语句

返回值:ResultSet结果集

ResultSet(结果集对象)

1封装DQL查询的语句的结果

ResultSet  Stmt.executeQuery(sql) 执行DQL语句,返回ResultSet 对象

2获取查询的结果

Boolean next() 将光标从当前位置向前移动一行  判断当前行是否为有效行(是否有数据)

返回值:

true  :有效行 ,当前行有数据

false :无效行 ,当前行没有数据

获取数据

xxx  getXxx(参数) 

xxx为数据类型   如  int  getlnt(参数); String getString(参数)

参数有两种类型

int  :列的编号,从1开始

String :列的名称



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test3 {
	public static void main(String[] args) throws Exception{
		String url="jdbc:mysql:///school";
		String username="root";
		String passWard="666";
		Connection con=DriverManager.getConnection(url, username, passWard);//获取连接
		String sql="select * from employee";
		Statement st=con.createStatement();
		ResultSet rs=st.executeQuery(sql);
		/*
		while(rs.next()) {//判断是否有数据
			System.out.println("-----------");
			int in=rs.getInt(1);	
			String  s=rs.getString(2);
			int in2=rs.getInt(3);
			System.out.println("学号:"+in);
			System.out.println("姓名:"+s);
			System.out.println("奖学金:"+in2);
			
		}
		*/
		System.out.println("-----------");
		
		//第二种方式参数填字段名
		while(rs.next()) {
			System.out.println("------------");
			int myin=rs.getInt("e_id");
			String mys=rs.getString("e_name");
			int money=rs.getInt("e_money");
			System.out.println("学号:"+myin);
			System.out.println("姓名:"+mys);
			System.out.println("奖学金:"+money);
			
		}
	
		
		
	}

}

案例:

把查询的数据,封装成Student对象,并且存储到Arraylist集合中去

创建一个学生类



public class Student {
	private int id;
	private String name;
	private int money;
	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	/**
	 * @return the money
	 */
	public int getMoney() {
		return money;
	}
	/**
	 * @param money the money to set
	 */
	public void setMoney(int money) {
		this.money = money;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", money=" + money + "]";
	}
	public Student(int id, String name, int money) {
		super();
		this.id = id;
		this.name = name;
		this.money = money;
	}
	
	

}

主函数



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class Test4 {
	//把从mysql中遍历的数据封装成student对象,并用ArrayList存起来
	public static void main(String[] args) throws Exception {
		String url="jdbc:mysql:///school";
		String userName="root";
		String PassWord="666";
		Connection con=DriverManager.getConnection(url, userName, PassWord);//创建连接
		Statement st=con.createStatement();
		String sql="select * from employee";
		ResultSet rs=st.executeQuery(sql);
		//创建一个ArrayList集合
		List<Student> list=new ArrayList<>();
		while(rs.next()) {
			int id=rs.getInt(1);
			String name=rs.getString(2);
			int money=rs.getInt(3);
			list.add(new Student(id, name, money)); // 把学生对象添加到集合中
			
		}
		System.out.println(list); //我已经重写了toStirng方法
		//输出[Student [id=1, name=张三, money=3000], Student [id=2, name=李四, money=3000]]
	
	}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小萌新上大分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值