JavaWeb个人学习心得之JDBC驱动的配置篇

一、JDBC

1、第一个JDBC程序

步骤总结:

1、加载驱动

Class.forName(com.mysql.cj.jdbc.Driver);
//配置url,username,password信息
String url="jdbc:mysql:localhost:3306/web_demo-db?useUnicode=true&characterEncoding =true&useSSL=true";
String username = "root";
String password ="password";

2、连接数据库DriverManager

Connection  conn = DriverManager.getConnection();

3、获得执行sql的对象 Statment

Statement st = conn.createStatement();

4.编写sql执行语句

String sql="SELECT * FROM users";

5.st对象去执行sql获得返回的结果集

ResultSet rs = statment.executeQuery(sql);
//打印获得的结果,因为ResultSet是一个链表结构
while(resultSet.next()){
System.out.println("id:"+resultSet.getObject("id"));
System.out.println("username:"+resultSet.getObject("username"));
System.out.println("password:"+resultSet.getObject("password"));
System.out.println("email:"+resultSet.getObject("email"));
System.out.println("=================");
}

5、释放连接

rs.close();
st.close();
conn.close();

示例:

//我的第一个JDBC程序
public class JDBCFirstDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//原始写法,先注册,才能用 DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//现在写法
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");//固定写法

//2.用户信息url
String url = "jdbc:mysql://localhost:3306/web_demo_db?useUnicode=true&characterEncoding=utf8&useSSL=true";
String username = "root";
String password ="password";

//3.连接成功,数据库对象
Connection connection = DriverManager.getConnection(url,username,password);
//4.执行SQL的对象
Statement statment=connection.createStatement();
//5.执行SQL的对象, 去执行SQL ,可能存在结果,查看返回的结果
String sql="SELECT * FROM users";
ResultSet resultSet = statment.executeQuery(sql);//返回的结果集
//输出获得的数据
while(resultSet.next()){
System.out.println("id:"+resultSet.getObject("id"));
System.out.println("username:"+resultSet.getObject("username"));
System.out.println("password:"+resultSet.getObject("password"));
System.out.println("email:"+resultSet.getObject("email"));
System.out.println("=================");
}
//6.释放连接
resultSet.close();
statment.close();
connection.close();
}
}

DriverManager

//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");//固定写法

//3.连接成功,数据库对象
Connection connection = DriverManager.getConnection(url,username,password);
//connection代表数据库
//数据库设置自动提交
connection.setAutoCommit();
//事务提交
connection.commit();
//事务回滚
connection.rollback();

如果是驱动5以下的,就用:

//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");//固定写法

URL

String url = "jdbc:mysql://localhost:3306/web_demo_db?useUnicode=true&characterEncoding=utf8&useSSL=true";
//登录的用户名和密码
String username = "root";
String password ="password";

//mysql默认的端口是3306
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3

//oralce的默认端口是1521
//jdbc:oracle:thin:@localhost:1521:

Statment 执行SQL的对象 PrepareStatment执行SQL的对象

 //4.执行SQL的对象 Statment 执行sql的对象
Statement statment=connection.createStatement();
statment.executeQuery(String sql);//查询操作返回 ResultSet
statment.execute(String sql);//执行任何sql的操作
statment.executeUpdate(String sql);//更新,插入,删除,都是用这个,返回一个受影响的行数

ResultSet

ResultSet resultSet = statment.executeQuery(sql);//返回的结果集
//拿结果的方式:
//在不知道类型的情况下使用
resultSet.getObject();
//如果知道列的类型就是用指定的类型
resultSet.getString();
resultSet.getInt();
resultSet.getDate();
resultSet.getFloat();
resultSet.absolute(row);//移动到指定行
...

遍历:指针

//输出获得的数据
//resultSet.next()移动到下一个数据
while(resultSet.next()){
 System.out.println("id:"+resultSet.getObject("id"));   System.out.println("username:"+resultSet.getObject("username"));    System.out.println("password:"+resultSet.getObject("password"));
System.out.println("email:"+resultSet.getObject("email"));
System.out.println("=================");
}

释放资源()必须做

//6.释放连接
resultSet.close();
statment.close();
connection.close();

2、Statment对象

jdbc中的statment对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。

Statment对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据法发生了变化)。

Statment.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。

1.1、CRUD操作-create

CRUD操作-create

使用executeUpdate(String sql)方法完成数据添加操作:

示例操作:
Statement statment=connection.createStatement();
String sql = "insert into user (..) value(...)";
int num = statment.executeUpdate(sql);
if(num > 0){//增加成功表示受影响的行数为1,返回一个正数1,就大于0
System.out.println("插入成功");
}

1.2、CRUD操作-delete

CRUD操作-delete

使用executeUpdate(String sql)方法完成数据添加操作:

示例操作:
Statement statment=connection.createStatement();
String sql = "delete form user where id = 1";
int num = statment.executeUpdate(sql);
if(num > 0){//删除成功表示受影响的行数为1,返回一个正数1,就大于0
System.out.println("删除成功");
}

1.3、CRUD操作-update

CRUD操作-update

使用executeUpdate(String sql)方法完成数据添加操作:

示例操作:
Statement statment=connection.createStatement();
String sql = "update user set name='' where  name='' ";
int num = statment.executeUpdate(sql);
if(num > 0){//增加成功表示受影响的行数为1,返回一个正数1,就大于0
System.out.println("更新成功");
}

1.4、CRUD操作-update

CRUD操作-update

使用executeUpdate(String sql)方法完成数据添加操作:

示例操作:
Statement statment=connection.createStatement();
String sql = "update user set name='' where  name='' ";
int num = statment.executeUpdate(sql);
if(num > 0){//增加成功表示受影响的行数为1,返回一个正数1,就大于0
System.out.println("更新成功");
}

1.5、CRUD操作-read

CRUD操作-read

使用executeUpdate(String sql)方法完成数据添加操作:

示例操作:
Statement statment=connection.createStatement();
String sql = "select *form user where id =1";
int num = statment.executeQuery(sql);
//while用于遍历
while(num > 0){//增加成功表示受影响的行数为1,返回一个正数1,就大于0
//根据获取列的数据类型,分别调用statment相应的方法映射daojava对象中
}

3、为方便使用创建一个工具类

  1. db.properties文件存放着连接数据库的信息
  2. JDBCUtils是配置db.properties文件,方便其他类的操作
  3. Testinset是通过工具类JDBCUtils来操作数据库的数据

1.1、在src下创建一个db.properties的配置文件(file)

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/web_demo_db?useUnicode=true&characterEncoding=utf8&useSSL=true
username=root
password=password

1.2、在创建一个使用这个模板的工具类JDBCUtils

//创建一个工具类来使用配置的文件db.properties
public class JDBCUtils {

private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;

static {
try{
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);

driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");


//驱动只用加载一次
Class.forName(driver);

} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException {

return DriverManager.getConnection(url,username,password);
}

//释放连接资源
public static void release(Connection conn, Statement st, ResultSet rs){
if (rs !=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}

1.3、然后可以创建一个类Testinserty使用这个工具类来实现对数据库的增删改查(模板):

public class TestInsert {
public static void main(String[] args) {

Connection conn = null;//其他的数据操作,这里也是不变
Statement st = null;//其他的数据操作,这里也是不变
ResultSet rs=null;//其他的数据操作,这里也是不变
try {
conn = JDBCUtils.getConnection();//其他的数据操作,这里也是不变
st = conn.createStatement();//其他的数据操作,这里也是不变

//只有这里需要改变
String sql="INSERT INTO  users (id,`username`,`password`,`email`)" +
"VALUES(9,'admin','123', '965@123.com')";

//其他的数据操作,这里也是不变,如果是读取的话,这里executeUpdate变成executeQuery
int i = st.executeUpdate(sql);
if (i>0){
System.out.println("插入成功");
}
} catch (SQLException e) {
e.printStackTrace();//其他的数据操作,这里也是不变
}finally {
//释放资源
JDBCUtils.release(conn,st,rs);//其他的数据操作,这里也是不变
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值