Class.forName("com.mysql.cj.jdbc.Driver");
提示Mysql 5之后的驱动包,可以省略注册驱动的步骤
自动加载jar包中META-INF/Services/java.sql.Driver文件中的驱动类
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为你自己的数据库名称
普通执行sql对象
Statement createStatement()
预编译Sql的执行sql对象:防止sql注入
PreparedStatement prepareStatement(sql)
执行存储过程的对象
CallableStatement prepareCall(sql)
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();
- }
-
-
- }
-
- }
int executeUpdate(sql) :执行DML,DDL语句
返回值:DML语句影响行数,,DML可以根据返回值是否大于0,判断是否执行成功; DDL语句执行后,执行成功也可能返回0
ResultSet executeQuery(sql) :执行 DQL语句
返回值:ResultSet结果集
ResultSet Stmt.executeQuery(sql) 执行DQL语句,返回ResultSet 对象
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
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]]
-
- }
-
- }