免备案的网站建设,沈阳企业黄页免费,私人做网站收费,wordpress火车头5.0目录
1.Connection接口常用方法
2.DriverMange类 3.Statement接口
4.实现表的数据更新#xff08;增、改、删#xff09; 5.实现数据查找#xff08;ResultSet接口#xff09; 6.PreparedStatement 数据更新 1.Connection接口常用方法
用来与数据库连接的对象#xff… 目录
1.Connection接口常用方法
2.DriverMange类 3.Statement接口
4.实现表的数据更新增、改、删 5.实现数据查找ResultSet接口 6.PreparedStatement 数据更新 1.Connection接口常用方法
用来与数据库连接的对象只有获得了特定的数据库对象才能对数据库进行操作
方法描述createStatement()创建一个 Statement 对象用于执行 SQL 语句。createStatement(int resultSetType,int resultSetConcurrency)根据给定的结果集类型和并发性创建一个 Statement 对象用于执行 SQL 语句。prepareStatement()创建一个 PreparedStatement 对象用于执行带有参数的 SQL 语句。isReadOnly()返回一个布尔值指示数据库连接是否为只读模式。setReadOnly()设置数据库连接的只读模式以指示是否允许修改数据库。commit()提交当前事务中所有挂起的更改。rollback()回滚当前事务中的所有挂起的更改。close()关闭数据库连接。
2.DriverMange类
这个类主要包含和数据库的交互方法
方法描述getConnection(String url, String user, String password)获取与指定数据库的连接。传入数据库的URL、用户名和密码作为参数。setLogonTimeout()设置在尝试连接到数据库时等待的最长时间超过该时间将引发异常。println(String message)打印消息到控制台或日志文件中。用于调试和记录信息。
案例代码数据库的连接基于MySQL
数据库的连接与关闭
package com.company;import java.sql.Connection;
import java.sql.DriverManager;public class Main {public static void main(String[] args){final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxx;Connection conn null;try {
// 通过反射加载mysql驱动Class.forName(DATABASE_DRIVER);
// 建立连接conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 输出连接对象信息System.out.println(conn);
// 关闭连接conn.close();}catch (Exception e){e.printStackTrace();}}
}3.Statement接口
该接口是java执行数据库的重要操作在建立完成数据库连接的基础上向数据库发送需要执行的SQL的语句
方法描述execute(String sql)执行给定的 SQL 语句返回一个布尔值表示是否执行成功。executeQuery(String sql)执行给定的查询 SQL 语句返回一个结果集 ResultSet 对象。clearBatch()清除该 Statement 对象当前设置的批处理命令。addBatch(String sql)将 SQL 语句添加到当前的批处理中。close()关闭 Statement 对象。任何打开的结果集也将关闭。
1.在案例操作前先确保建立好一个列表
这里通过Datadrip工具也可以用其他的工具比如DBeaver、Navica可以t快速根据需求自动生成sql脚本也可以通过sql语句自行创建。
创建一个Person表定义了姓名年龄身份证名族。并且设置了身份证为唯一的主码并且是唯一的。
具体sql语句如下
create table Person
(name varchar(4) not null comment 姓名,age int null comment 年龄,ID int null comment 身份证,nation varchar(4) null comment 民族
);create unique index Person_ID_uindexon Person (ID);alter table Personadd constraint Person_pkprimary key (ID); 4.实现表的数据更新增、改、删 案例实现实现插入sql信息 插入信息 姓名王二 年龄18 身份id001 民族汉族 SQL代码案例
insert into person(name, age, ID, nation) VALUE (王二,18 ,001 ,汉族);
那么搭配JDBC实现数据库中表的插入代码如下:
package JavaWeb02;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class javaDemo {public static void main(String[] args)throws Exception {final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxx;String sql insert into person(name, age, ID, nation) VALUE (王二,18 ,001 ,汉族);
// 加载驱动Class.forName(DATABASE_DRIVER);
// 建立连接Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据库操作对象Statement statement conn.createStatement();int count statement.executeUpdate(sql);System.out.println(更新行数count);
// 关闭数据库连接conn.close();}
}在数据库中查询可以看到确实是插入成功了 已经会了插入就可以尝试其他操作比如数据删除数据修改等等只需要把sql内容改一下就行了
案例数据修改
package JavaWeb03;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class javaDemo {public static void main(String[] args) throws Exception{final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxx;String sql update person set name黄小龙,age99 where name王二;
// 加载驱动Class.forName(DATABASE_DRIVER);
// 建立连接Connection coon null;coon DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据库操作对象Statement statement coon.createStatement();System.out.println(更新的行数statement.executeUpdate(sql));coon.close();}
}案例数据删除
package JavaWeb04;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class javaDemo {public static void main(String[] args) throws Exception{final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxxx;
// 想要执行的sql语句String sql delete from person where name王二;// 加载驱动Class.forName(DATABASE_DRIVER);
// 连接数据库Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据库操作对象Statement statement conn.createStatement();statement.executeUpdate(sql);
// 关闭连接conn.close();}
}5.实现数据查找ResultSet接口
数据查询返回的值需要用ResultSet接口进行封装 以下是接口ResultSet接口的常用方法
方法名描述next()将游标移动到结果集中的下一行并返回是否还有更多行可用的布尔值。在循环中逐行处理结果集时使用。getXxx(int columnIndex)根据列的索引获取当前行指定列的数据。columnIndex是从1开始计数的列索引。getXxx代表具体的数据类型如getInt、getString等。返回指定列的数据可以进行类型转换。getXxx(String columnLabel)根据列的名称获取当前行指定列的数据。columnLabel是列的字符串形式名称。类似于getXxx(int columnIndex)方法返回指定列的数据。close()关闭结果集释放与结果集相关的资源。在不再需要访问结果集时应该调用此方法来关闭结果集以便及时释放资源。
数据查询案例
数据库内容 案例代码
package JavaWeb05;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class javaDemo {public static void main(String[] args)throws Exception {final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxxx;String sql select name, age, ID, nation from person;// 加载驱动Class.forName(DATABASE_DRIVER);
// 建立连接Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建操作对象,并且对象使用的是执行查找语句的方法Statement statement conn.createStatement();ResultSet rs statement.executeQuery(sql);
// 需要按照定义的类型进行接收while (rs.next()){String name rs.getString(name);int age rs.getInt(age);int id rs.getInt(id);String nation rs.getString(nation);System.out.println(namename ageage idid nationnation);}// 退出连接conn.close();rs.close();}
}6.PreparedStatement 数据更新
问题引入如果要正常插入数据并且使用statement接口则代码会如下
package JavaWeb06;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;public class javaDemo {public static void main(String[] args)throws Exception {final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxx;String name 汪心;int id 100;String nation 汉族;int age 32;String sql insert into person(name, age, ID, nation)VALUE(name,age,id,nation);// 加载驱动Class.forName(DATABASE_DRIVER);
// 连接Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据操作对象Statement statement conn.createStatement();statement.executeUpdate(sql);
// 关闭对象conn.close();}
}可以看到如果用statement接口那么会需要一个完整的sql语句而sql语句需要通过拼接起来非常麻烦所以引入了PreparedStatement
Preparedstatement的常用方法如下
方法描述executeUpdate()执行 INSERT、UPDATE 和 DELETE 等更新操作并返回更新的行数。executeQuery()执行 SELECT 查询操作并返回结果集。setXxx(index, value)通过索引设置参数值其中 Xxx 表示数据类型如 setInt、setString 等。setXxx(parameterName, value)通过参数名设置参数值其中 Xxx 表示数据类型如 setInt、setString 等。setNull(index, dataType)设置参数为空值。getGeneratedKeys()获取生成的键。
Preparedstatement与Statement相比在编写sql语句的时候可以用?进行占位符的设计在通过conn.prepareStatement(sql语句)创建对象时候将sql作为参数传入进去对于每一位的占位符都可以通过对象.set类型(第几个占位符,类型值)
以下案例代码实现通过Preparedstatement向数据库插入一条数据
插入案例代码
package JavaWeb07;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;public class javaDemo {public static void main(String[] args)throws Exception {final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxx;String name 汪心;int id 100;String nation 汉族;int age 32;String sql insert into person(name, age, ID, nation)VALUES(?,?,?,?);// 加载驱动Class.forName(DATABASE_DRIVER);
// 建立连接Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据操作对象PreparedStatement preparedStatement conn.prepareStatement(sql);preparedStatement.setString(1,name);preparedStatement.setInt(2,age);preparedStatement.setInt(3,id);preparedStatement.setString(4,nation);int count preparedStatement.executeUpdate();System.out.println(本次更新的行数count);
// 关闭连接conn.close();}
}案例 数据查询
package JavaWeb08;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class javaDemo {public static void main(String[] args)throws Exception {final String DATABASE_DRIVER com.mysql.cj.jdbc.Driver;final String DATABASE_URLjdbc:mysql://localhost:3306/mysqltest;final String DATABASE_USER mysql;final String DATABASE_PASSWORD xxxxxxx;String sql select name, age, ID, nation from person;// 加载驱动Class.forName(DATABASE_DRIVER);
// 建立连接Connection conn null;conn DriverManager.getConnection(DATABASE_URL,DATABASE_USER,DATABASE_PASSWORD);
// 创建数据操作对象PreparedStatement preparedStatement conn.prepareStatement(sql);ResultSet rs preparedStatement.executeQuery();while (rs.next()){
// ResultSet通过占位符的位置获取信息String name rs.getString(1);int age rs.getInt(2);int id rs.getInt(3);String nation rs.getString(4);System.out.println(namename ageage idid nationnation);}
// 关闭连接conn.close();rs.close();}
}