11.连接数据库、结果集光标与元数据

mac2025-12-31  4

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191101213137136.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzMzMzg1MA==,size_16,color_FFFFFF,t_70

//连接数据库:得到connection就成功 public class demo1 { /*ClassNotFoundException: * 没导驱动包 * SQLException : * 检查3个参数URL,username,password是否正确 * 检查是否开启MySQL服务器 * */ @Test public void fun1() throws ClassNotFoundException, SQLException { /*jdbc四大参数: * driverClassName:com.mysql.jdbc.Driver * url:jdbc:mysql://localhost:3306/mydb1 * username:root * password:123 * */ //准备四大参数 String driverClassName="com.mysql.jdbc.Driver"; //jdbc协议格式!jdbc :工商名称:子协议(由工商自己来规定) //对MySQL而言,它的子协议结构://主机:端口号/数据库名称 String url="jdbc:mysql://localhost:3306/mydb1"; String username="root"; String password="123"; Class.forName(driverClassName);//加载驱动类 //使用三个参数得到连接对象 Connection con=DriverManager.getConnection(url, username, password); System.out.println(con); /* * 二、对数据库做增、删、改 * 1、通过connection对象创建Statement(语句发送器,功能是向数据库发送sql语句) * 2、调用它的int executeUpdate(String sql),它可以发送DML、DDL * */ //1.通过Connection得到Statement对象 Statement stmt=con.createStatement(); //2.使用Statement发送sql语句! String sql="INSERT INTO stu VALUES('002','xiaomin',23,'female')"; int r=stmt.executeUpdate(sql); System.out.println(r); public void fun2() throws ClassNotFoundException, SQLException { /*一、得到Connection *二、得到Statement,发送select语句; *三、对查询返回的表格进行解析! * * 一、得到连接 * 1.准备四大参数 * */ String driverClassName="com.mysql.jdbc.Driver"; String url="jdbc:mysql://localhost:3306/mydb1"; String username="root"; String password="123"; /* *加载驱动类 * */ Class.forName(driverClassName); /* * 通过剩下的三个参数调用DriverManager的getConnection(),得到连接 * */ Connection con=DriverManager.getConnection(url, username, password); /* * 二、得到statement,执行select语句 * 1、得到statement对象:Connection的createStatement()方法 * */ Statement stmt=con.createStatement(); /* * 2、调用Statement的ResultSet(结果集) rs=executeQuery(String querySql) * */ ResultSet rs=stmt.executeQuery("select *from stu"); /* * 三、解析RusultSet * 1、把行光标移动到第一行,可以调用next()方法完成! * * getString()与getObject()是通用的; * */ if(rs.next()) {//把光标移到下一行,并判断下一行是否存在! int number=rs.getInt(1);//通过编号(第几列)来获得该列的值(该列为int型) String name1=rs.getString("name1");//也可以通过列名称来获得该列的值 System.out.println(number+ ","+name1); } /* * 四、关闭资源 * 倒关 * */ rs.close(); stmt.close(); con.close(); } // 规范化 public void fun3()throws Exception { Connection con=null;// Statement stmt=null; ResultSet rs=null;//在try 外给出引用定义,try内为对象实例化 try { String driverClassName="com.mysql.jdbc.Driver"; String url="jdbc:mysql://localhost:3306/mydb1"; String username="root"; String password="123"; Class.forName(driverClassName); con=DriverManager.getConnection(url, username, password); stmt=con.createStatement(); rs=stmt.executeQuery("select * from stu"); while(rs.next()){ System.out.println(rs.getString("number")+","+rs.getObject(2)); } }catch(Exception e) { throw new RuntimeException(e); }finally {//关闭 if(rs!=null)rs.close();//防止执行rs=stmt.executeQuery("select * from stu") //抛出异常时,rs没有赋值为空指针(此catch里的语句执行前会 //执行finally语句) if(stmt!=null)stmt.close(); if(con!=null)con.close(); } }
最新回复(0)