jdbc链接数据库mysql
package cn.itcast.demo2; 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 Demo2 { /* * 连接数据库,得到Connection就算成功! * 对数据库做增、删、改 */ @Test public void fun1() throws ClassNotFoundException, SQLException { /* * 一、得到Connection * 1. 准备四大参数 * 2. 加载驱动类 * 3. 得到Connection */ // 准备四大参数 String driverClassName = "com.mysql.jdbc.Driver"; // jdbc协议的格式!jdbc:工商的名称:子协议(由工商自己来规定) // 对mysql而言,它的子协议结构://主机:端口号/数据库名称 String url = "jdbc:mysql://localhost:3306/mydb3"; String username = "root"; String password = "123"; // 加载驱动类 Class.forName(driverClassName); // 使用DriverManager,以及省下的3个参数,得到Connection Connection con = DriverManager.getConnection(url, username, password); /* * 二、对数据库做增、删、改 * 1. 通过Connection对象创建Statement * > 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('ITCAST_0003', 'wangWu', 88, 'male')"; // String sql = "UPDATE stu SET name='zhaoLiu', age=22, " + // "gender='female' WHERE number='ITCAST_0003'"; String sql = "DELETE FROM stu"; int r = stmt.executeUpdate(sql); System.out.println(r); } /** * 执行查询 * @throws ClassNotFoundException * @throws SQLException */ @Test public void fun2() throws ClassNotFoundException, SQLException { /* * 一、得到Connection * 二、得到Statement,发送select语句 * 三、对查询返回的“表格”进行解析! */ /* * 一、得到连接 * 1. 准备四大连接参数 */ String driverClassName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/exam"; String username = "root"; String password = "123"; /* * 2. 加载驱动类 */ Class.forName(driverClassName); /* * 3. 通过省下的三个参数调用DriverManger的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 emp"); /* * 三、解析ResultSet * 1. 把行光标移动到第一行,可以调用next()方法完成! */ while(rs.next()) {//把光标向下移动一行,并判断下一行是否存在! int empno = rs.getInt(1);//通过列编号来获取该列的值! String ename = rs.getString("ename");//通过列名称来获取该列的值 double sal = rs.getDouble("sal"); System.out.println(empno + ", " + ename + ", " + sal); } /* * 四、关闭资源 * 倒关 */ rs.close(); stmt.close(); con.close();//这个东东,必须要关,不关就死! } // 规范化 @Test public void fun3() throws Exception { Connection con = null;//定义引用 Statement stmt = null; ResultSet rs = null; try { /* * 一、得到连接 */ String driverClassName = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/exam"; String username = "root"; String password = "123"; Class.forName(driverClassName); con = DriverManager.getConnection(url, username, password);//实例化 /* * 二、创建Statement */ stmt = con.createStatement(); String sql = "select * from emp"; rs = stmt.executeQuery(sql); rs.last();//把光标移动到最后一行 System.out.println(rs.getRow()); rs.beforeFirst(); /* * 三、循环遍历rs,打印其中数据 * * getString()和getObject()是通用的! */ // while(rs.next()) { // System.out.println(rs.getObject(1) + ", " // + rs.getString("ename") + ", " + rs.getDouble("sal")); // } int count = rs.getMetaData().getColumnCount(); while(rs.next()) {//遍历行 for(int i = 1; i <= count; i++) {//遍历列 System.out.print(rs.getString(i)); if(i < count) { System.out.print(", "); } } System.out.println(); } } catch(Exception e) { throw new RuntimeException(e); } finally { // 关闭 if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(con != null) con.close(); } } }