• 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()

    1. import java.sql.Connection;
    2. import java.sql.DriverManager;
    3. import java.sql.SQLException;
    4. import java.sql.Statement;
    5. public class Test2 {
    6. //事务模拟
    7. public static void main(String[] args) throws Exception{
    8. // TODO Auto-generated method stub
    9. String url="jdbc:mysql:///school"; //school为你的数据名称
    10. String userName="root";
    11. String passWord="666";
    12. Connection con=DriverManager.getConnection(url, userName, passWord);
    13. try {
    14. con.setAutoCommit(false);//开启事务
    15. String sql="UPDATE employee set e_money=3000 WHERE e_name='张三'";
    16. Statement st=con.createStatement(); //获取执行对象
    17. int count =st.executeUpdate(sql); //执行sql
    18. String sql2="UPDATE employee set e_money=3000 WHERE e_name='李四'";
    19. int count2=st.executeUpdate(sql2);
    20. System.out.println(count);
    21. System.out.println(count2);
    22. con.commit();//如果正确就提交事务
    23. } catch (Exception e) {
    24. con.rollback();//出错回滚事务
    25. e.printStackTrace();
    26. }
    27. }
    28. }

    三: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 :列的名称

    1. import java.sql.Connection;
    2. import java.sql.DriverManager;
    3. import java.sql.ResultSet;
    4. import java.sql.Statement;
    5. public class Test3 {
    6. public static void main(String[] args) throws Exception{
    7. String url="jdbc:mysql:///school";
    8. String username="root";
    9. String passWard="666";
    10. Connection con=DriverManager.getConnection(url, username, passWard);//获取连接
    11. String sql="select * from employee";
    12. Statement st=con.createStatement();
    13. ResultSet rs=st.executeQuery(sql);
    14. /*
    15. while(rs.next()) {//判断是否有数据
    16. System.out.println("-----------");
    17. int in=rs.getInt(1);
    18. String s=rs.getString(2);
    19. int in2=rs.getInt(3);
    20. System.out.println("学号:"+in);
    21. System.out.println("姓名:"+s);
    22. System.out.println("奖学金:"+in2);
    23. }
    24. */
    25. System.out.println("-----------");
    26. //第二种方式参数填字段名
    27. while(rs.next()) {
    28. System.out.println("------------");
    29. int myin=rs.getInt("e_id");
    30. String mys=rs.getString("e_name");
    31. int money=rs.getInt("e_money");
    32. System.out.println("学号:"+myin);
    33. System.out.println("姓名:"+mys);
    34. System.out.println("奖学金:"+money);
    35. }
    36. }
    37. }

    案例:

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

    创建一个学生类

    1. public class Student {
    2. private int id;
    3. private String name;
    4. private int money;
    5. /**
    6. * @return the id
    7. */
    8. public int getId() {
    9. return id;
    10. }
    11. /**
    12. * @param id the id to set
    13. */
    14. public void setId(int id) {
    15. this.id = id;
    16. }
    17. /**
    18. * @return the name
    19. */
    20. public String getName() {
    21. return name;
    22. }
    23. /**
    24. * @param name the name to set
    25. */
    26. public void setName(String name) {
    27. this.name = name;
    28. }
    29. /**
    30. * @return the money
    31. */
    32. public int getMoney() {
    33. return money;
    34. }
    35. /**
    36. * @param money the money to set
    37. */
    38. public void setMoney(int money) {
    39. this.money = money;
    40. }
    41. @Override
    42. public String toString() {
    43. return "Student [id=" + id + ", name=" + name + ", money=" + money + "]";
    44. }
    45. public Student(int id, String name, int money) {
    46. super();
    47. this.id = id;
    48. this.name = name;
    49. this.money = money;
    50. }
    51. }

    主函数

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

  • 相关阅读:
    python的标识符命名规则,保留字表
    C语言指针,深度长文全面讲解
    聊一聊浏览器打印 - window.print
    腾讯云服务器2核4G、4核8G、8核16G、16核32G配置报价表出炉
    在Linux中进行hadoop集群搭建
    暑期JAVA学习(42.1)TCP通信——使用线程池优化
    QoS服务质量七交换机拥塞管理
    如何入门编程?
    谈谈自购和客供物料的切换问题
    多目标优化算法:多目标圆圈搜索算法(Multi-Objective Circle Search Algorithm,MOCSA)
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/126093685