JavaSE高级编程一(JDBC连接)
JavaSE高级编程一
1 JDBC
1.1 传参方式
(1)实体化类(构造方法)
(2)监听类的方法进行传参
(3)静态类的使用
(4)Get/set的对属性进行封装
1.2 if超过三个记得将内部的语句块封装成方法;
1.3 prepareStatement()接口:
prepareStatement()是statement的子接口。
接口跟接口之间是可以继承。PreparedStatement 接口创建表示预编译的SQL 语句的对象。
SQL 语句经过预编译,并存储在PreparedStatement 对象中。然后,此对象可用来有效地多次执行此语句。用 executeUpdate() 方法执行SQL语句
优点:使用prepareStatement表示可以在传递参数时比较不容易出错,对于数据库语句的使用过程中个,比较容易掌握,安全性高,比之前的statement传递更方便。
1.4 preparestatemnet和statement的区别:
(1)preparestament是预编译而statement不是;
(2)在每次执行sql语句的增删改时,statement都要重新编译一遍,preparement不用,运行效率大于statement;
(3)对于可读性来讲,虽然preparement来替代statement会多出几行,但是这样的可读性效果是很好的,比较不容易出错。
(4)安全性来讲:preparestatement是用?
传参的,可以防止sql的语句错误编写,而statement是用拼接的,安全性是较低的,比较容易出错。
(5)ResultSet接口
返回ResultSet,主要是为了显示sql语句的执行结果。
使用 getXXX 方法检索数据 , getInt() 用于检索整型值 ,getString() 用于检索字符串值。
通过next()方法对于每一条的结果检索,If显示一条,while全部显示。
1.5 JDBC的执行步骤:
1.5.1 全部执行过程:
public static Connection conn;
public static void main(String[] args) {
try {
//1、加载驱动String ->object(程序类)
Class.forName("org.sqlite.JDBC");
//2、得到连接
conn = DriverManager.getConnection("JDBC:sqlite:db\\myqqs.db");
System.out.println(conn);
System.out.println("JDBC驱动加载成功");
//3、执行对象
Statement state = conn.createStatement();
//4、String
String sql ="INSERT INTO employee (EID,Employee_name,Employee_pwd,Job_name)VALUES(112,'大大',1234,'软件')";
//5、执行
int num = state.executeUpdate(sql);
//6、处理结果
if(num>0)
{
System.out.println("添加成功");
}
else
{
System.out.println("添加失败");
}
//7、关闭电源
state.close();//关掉对象
conn.close();//关掉连接
}
catch (ClassNotFoundException e) {//调用jar包就出现了各种错误,都是ClassNOtFoundException
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SQLException e) {//数据库错误
// TODO: handle exception
e.printStackTrace();
System.out.println("数据异常");
}
}
1.5.2 JDBC连接对应的mysql的数据库:
重点:
1、 进行封装:得到连接
2、 关闭连接
3、 对需要的用户名和密码进行设置:
4、 设置对于用户类的包装拿过来使用
5、 设置关闭和建立连接的封装方法,便于多次使用的JDBC
6、 设置对应的值进行添加还有其他的操作:
Connection关闭后,ResultSet/Statement都会被关闭
7、 删除
8、 修改
1.5.3 进行JDBC的增删改查
下面展示一些 内联代码片
。
/*
* *************
* 添加JDBC数据---------------
* 1、添加数据库的记录
*/
private String addNewUser(TbUser tbUser) {
String sql ="INSERT INTO user (eid,user_name,user_pwd,job_name) VALUES('"+tbUser.getEid()+"',"
+ "'"+tbUser.getUser_name()+"',"
+ "'"+tbUser.getUser_pwd()+"',"
+ "'"+tbUser.getJob_name()+"')";
System.out.println("数据库记录:"+sql);
return sql;
}
/*
* 2、用户来自于哪里,并且有返回
*/
private TbUser getUseFrom()
{
tbUser = new TbUser();
int eid = Integer.parseInt(UI.myqqReginJFrame.getMyqqReginJPlane().getLaccount_text().getText());
tbUser.setEid(eid);
tbUser.setUser_name(UI.myqqReginJFrame.getMyqqReginJPlane().getLnickname_text().getText());
tbUser.setUser_pwd(UI.myqqReginJFrame.getMyqqReginJPlane().getLpwd_text().getText());
tbUser.setJob_name(UI.myqqReginJFrame.getMyqqReginJPlane().getContent_text().getText());
return tbUser;
}
//3、添加数据
private void regins() {
try {
//1、建立连接,加载数据库驱动
conn = DbHepler.getConnection();
//2、创建执行sql语句的对象,执行对象
state = conn.createStatement();
tbUser = getUseFrom();
//3、String,编写sql语句
String sql = addNewUser(tbUser);
//4、执行sql语句
int num = state.executeUpdate(sql);
//5、处理结果
if(num>0)
{
JOptionPane.showMessageDialog(null, "注册成功!");
System.out.println("添加成功");
UI.tologin();//跳转登录
}
else
{
System.out.println("添加失败");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
finally {
DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
}
}
/*
* *************
* 删除JDBC数据---------------
* 1、删除数据库的记录
*/
private String deleNewUser(TbUser tbUser) {
String sql ="delete from user where eid='"+tbUser.getEid()+"'";
System.out.println("数据库记录:"+sql);
return sql;
}
/*
* 2、用户来自于哪里,并且有返回
*/
private TbUser getUsefrom()
{
tbUser = new TbUser();
int eid = Integer.parseInt(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_accout().getText());
tbUser.setEid(eid);
return tbUser;
}
/*
* 3、删除
*/
private void removeone() {
try {
//1、建立连接
conn = DbHepler.getConnection();
//2、执行对象
state = conn.createStatement();
tbUser = getUsefrom();//得到用户
//3、String
String sql = deleNewUser(tbUser);//删除用户
//4、执行
int num = state.executeUpdate(sql);
//5、处理结果
if(num>0)
{
System.out.println("删除成功");
JOptionPane.showMessageDialog(null, "删除成功!");
}
else
{
System.out.println("删除失败");
JOptionPane.showMessageDialog(null, "删除失败!");
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
}
}
/*
* 更新数据
*/
//1数据库
public String updateData(TbUser tbUser)
{
String sql = "update user set user_pwd='"+tbUser.getUser_pwd()+"' where eid='"+tbUser.getEid()+"'";
return sql;
}
//2面板
public TbUser getUserupdate()
{
tbUser = new TbUser();
int eid = Integer.parseInt(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_accout().getText());
tbUser.setEid(eid);
tbUser.setUser_pwd(UI.myqqLoginJFrame.getMyqqLoginJPlane().getJpf_pwd().getText());
return tbUser;
}
//3更新
public void updateUser()
{
try {
//1、建立连接
conn = DbHepler.getConnection();
//2、执行对象
state = conn.createStatement();
//3、String
tbUser = getUserupdate();//用户的更新
String sql = updateData(tbUser);
//4、执行
int num = state.executeUpdate(sql);
//5、处理结果
if(num>0)
{
System.out.println("更新成功");
JOptionPane.showMessageDialog(null, "更新成功!");
}
else
{
System.out.println("更新失败");
JOptionPane.showMessageDialog(null, "更新失败!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
DbHepler.closeResource(conn, state);//最终都会执行的一句话,就是关闭
}
//查询所有的数据:
public void testResultSet(){
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
//1. 获取数据库连接
connection = DbHepler.getConnection();
//2、创建执行sql语句的对象,执行对象
//2. 调用 Connection 对象的 createStatement() 方法获取 Statement 对象
statement = connection.createStatement();
//3. 准备 SQL 语句
String sql = "SELECT eid,user_name,user_pwd, Job_name,Boss_ID,Dept_ID FROM user";
//4. 发送 SQL 语句: 调用 Statement 对象的 executeQuery(sql) 方法.
//得到结果集对象 ResultSet
resultSet = statement.executeQuery(sql);
//5. 处理结果集:
//5.1 调用 ResultSet 的 next() 方法: 查看结果集的下一条记录是否有效,
//若有效则下移指针
System.out.println("用户表数据:");
while(resultSet.next()){
//5.2 getXxx() 方法获取具体的列的值.
int id = resultSet.getInt(1);
String user = resultSet.getString(2);
String pwd = resultSet.getString(3);
String jobname = resultSet.getString(4);
int bid = resultSet.getInt(5);
int did = resultSet.getInt(6);
System.out.println(id+"\t"+user+"\t"+pwd+"\t"+jobname+"\t"+bid+"\t"+did);
}
} catch (SQLException e) {
e.printStackTrace();
} finally{
//6. 关闭数据库资源
DbHepler.release(connection, statement, resultSet);
}
}
本文地址:https://blog.csdn.net/weixin_43497761/article/details/108978300