.\day17\day17_res\dbconfig.properties
#mysql
#url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSize=50&prepStmtCacheSqlLimit=300
#driverClassName=com.mysql.jdbc.Driver
#mssql
#driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=mydb
#mssql jtds //(2005-2008的数据库)
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#url=jdbc:jtds:sqlserver://127.0.0.1:1433;DatabaseName=mydb
#orcale
#driverClassName=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:mydb
#access
#driverClassName=sun.jdbc.odbc.JdbcOdbcDriver
#url=jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=mdb\\mydb.mdb // 文件路径
练习表:
CREATE TABLE stu_jdbc(
number CHAR(11),
name VARCHAR(50),
age int(11),
gender VARCHAR(10)
);
SELECT * FROM stu_jdbc;
desc stu_jdbc;
INSERT INTO stu_jdbc VALUES('itcst_0001','zhangSan',28,'male');
INSERT INTO stu_jdbc VALUES('itcst_0002','liSi',82,'female');
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/mydb1?characterEncoding=utf8&useSSL=true";
String username = "root";
String password = "1234";
// 加载驱动类
Class.forName(driverClassName);
// 使用DriverManager,以及剩下的3个参数,得到Connection
Connection con = DriverManager.getConnection(url,username,password);
/*
* 二、怼数据库的增、删、改
* 1、通过Connection对象创建Statement
* > Statement语句的发送器,它的功能就是向数据库发送sql语句
* 2、调用他的int exexuteUpdate(String sql) 他可以发送DML、DDL
*/
//1.通过Connection 得到Statement对象
Statement stmt = con.createStatement();
//2.使用statement发送sql语句
String sql = "INSERT INTO stu_jdbc VALUES('ITCAST_0003','wangWu',88,'male')";
// String sql = "UPDATE stu_jdbc SET name='zhaoLiu',age=22,gender='female' WHERE number='ITCAST_0003'";
// String sql = "DELETE FROM stu_jdbc WHERE number='ITCAST_0003'";
int r = stmt.executeUpdate(sql);
System.out.println(r);
// stmt.close();
// con.close();
}
/**
* 执行查询
*/
@Test
public void fun2() throws ClassNotFoundException,SQLException {
/*
* 一、得到Connection
* 二、得到Statement,发送select语句
* 三、对查询返回的表格进行解析
* 四、关闭资源
*/
/*
* 一、得到连接
* 1、准备四大连接参数
*/
String driverClassName = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb1?characterEncoding=utf8&useSSL=true";
String username = "root";
String password = "1234";
/*
* 2、加载驱动类
*/
Class.forName(driverClassName);
/*
* 3、通过剩下的3个参数调用DrierManger的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");
//System.out.println(rs); //结果无意义:com.mysql.jdbc.JDBC42ResultSet@43738a82
/*
* 三、解析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();//必须关闭(练习时跑完就结束了,但是真实环境一般项目在一直运行会占用资源,可能引起服务器崩溃)
}
}