20数据库操作
20.1数据库基本知识
20.1.1什么是数据库
- 数据库是一种存储结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据的时候重新输入他们。
- 特点:
- 实现数据共享
- 减少数据的冗余度
- 数据的独立性
- 数据实现集中控制
- 数据一致性和可维护性
- 安全性控制、完整性控制、并发控制、故障的发现和恢复
- 是数据管理的高级阶段,由文件管理系统发展起来
- 基本结构分为三个层次:
- 物理数据层
- 概念数据层
- 逻辑数据层
20.1.2数据库的种类及功能
- 层次型:对数据的各项操作都很困难
- 网状型:容易实现多对多的联系
- 对象模型数据库:建立在面向对象模型基础上
- 关系数据库:最流行,基于关系模型建立,关系模型由一系列表格组成
MySQL,DBMS
20.1.3SQL语言
-
Structure Query Language
-
组成:
-
数据定义语言DDL
-
数据操纵语言DML
-
SELECT语句
-
select name,age from tb_emp where sex ='女' order by age;
-
-
INSERT语句
-
insert into tb_emp value2(2,'lili','女','销售部');
-
-
UPDATE语句
-
update tb_emp set age = 24 where id = 2;
-
-
DELETE语句
-
delete from tb_emp where id = 1024;
-
-
-
数据控制语言DCL
-
事务控制语言
-
20.2JDBC概述
- 连接数据库和Java应用程序的一个纽带
20.2.1JDBC-ODBC桥
-
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn=DriverManager.getConnection("jdbc.odbc:tom","",""); Statement sql=conn.creatStatement();
20.2.2JDBC技术
- Java DataBase Connectivity 面向对象的应用程序接口
- JDBC技术主要完成以下几个任务
- 与数据库建立一个连接
- 向数据库发送SQL语句
- 处理从数据库返回的结果
- 并不能直接访问数据库,依赖于数据库厂商提供的JDBC驱动程序
20.2.3JDBC驱动程序的类型
- JDBC总体结构:应用程序、驱动程序管理器、驱动程序和数据源
- JDBC驱动分为:
- JDBC-ODBC桥
- 本地API一部分用Java编写的驱动程序
- JDBC网络驱动
- 本地协议驱动
- JDBC网络驱动和本地协议驱动是JDBC访问数据库的首选
20.3JDBC中常用的类和接口
20.3.1Connection接口
- Connection接口代表与特定的数据库的连接
20.3.2Statement接口
- 在已经建立连接的基础上向数据库发送SQL语句
- 三种Statement对象
- Statement:执行不带参数的简单的SQL语句
- PreparedStatement:继承Statament,执行动态的SQL语句
- CallableStatement:继承了PreparedStatement,执行对数据库的存储过程的调用。
20.3.3PreparedStatemengt接口
20.3.4DriverManager类
- 管理数据库中的所有驱动程序。
- JDBC的管理层,作用域用户和驱动程序之间。
20.3.5ResultSet接口
- 类似于一个临时表,暂时存放数据库查询操作所获得的结果集。
- Result实例具有指向当前数据行的指针,指针开始的位置在一条记录的前面,通过next()方法可将指针向下移。
20.4数据库操作
20.4.1连接数据库
-
加载数据库的驱动程序(只需要在第一次访问数据库时加载一次)
-
每次访问创建一个Connection对象
-
之后执行操作数据库的SQL语句
-
最后完成数据库操作销毁前面创建的Connection对象,释放与数据库的连接
-
package com.ShuJuKu; import java.sql.*; public class Conn { Connection con; public Connection getConnection(){ try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); }catch (ClassNotFoundException e){ e.printStackTrace(); } try{ con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName" + "=test", "sa","123456"); //con=DriverManager.getConnection("jdbc:mysql" + // "://localhost:1433/XX","DESETOP-Q7ASRR7", // "XXXX");jdbc:sqlserver://localhost:1433; DatabaseName=test System.out.println("数据库连接成功"); Statement sql=con.createStatement(); }catch (SQLException e){ e.printStackTrace(); } return con; } public static void main(String[] args) { Conn c=new Conn(); c.getConnection(); } }-
连接数据库费了很大劲,昨天晚上11点半才连接成功,
-
没有安装数据库;去CSDN找相应的安装教程
-
没有安装相应的JDBC;去CSDN找相应的配置教程
-
按照教程配置完后报错:No Suitable Driver Found For Jdbc
-
这种情况的原因有四个:
-
/*1, 连接URL格式出现了问题,书上格式不对,正确格式为:con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test,"xxxx","xxxx");当然我的数据库的账号密码不能告诉你们。 2, 驱动字符串出错,正确格式为:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 3, Classpath中没有加入合适的mysql_jdbc驱动。没看懂这点说的什么意思,其实做完第四点我的并不能用,又鼓捣了几下,不知道什么操作,后来改了一下URL格式成功解决。 4, 尝试着将mysql-connector-java-5.1.34-bin.jar的jar包加入C:\Program Files\Java\jre1.6.0_02\lib\ext文件夹下(或者直接导入项目中),问题解决 第四点描述没看懂,我是参考另一篇博文直接导入项目中,博文链接https://blog.csdn.net/qq_40740563/article/details/104737857?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161132275916780264034019%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161132275916780264034019&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-104737857.pc_search_result_no_baidu_js&utm_term=java%20IDEA%20%E8%BF%9E%E6%8E%A5SQL%20server2014*/
-
-
-
无法打开登录所请求的数据库,登录失败;解决方法参考:https://blog.csdn.net/peach90/article/details/42874989?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161133057416780271540844%252522%25252C%252522scm%252522%25253A%25252220140713.130102334…%252522%25257D&request_id=161133057416780271540844&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-42874989.pc_search_result_no_baidu_js&utm_term=IDEA%20%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%E7%99%BB%E5%BD%95%E6%89%80%E8%AF%B7%E6%B1%82%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93。另外还要确保你的用户名和密码是对的,然后你确实创建了一个数据库,我就是没有创建数据库就要连接数据库,导致一直连接不上。
昨晚配置数据库配置的我怀疑人生,我发现每次遇到故障,查遍CSDN也解决不了,认为自己的故障是独一无二的,是不可解决的,是老天的故意刁难,其实你没有那么特殊,CSDN上这么多人,你的故障不可能是第一次出现,一个编程小白,最大的可能就是你自己的水平不够。之所以解决不了是因为你没有完全理解完全看懂别人的博文,操作有瑕疵才导致的不好用。
所以说遇到故障(bug)还是得保持一个平和的心态,冷静的大脑,耐耐心心地把别人地博文看懂,这样才能事半功倍,这样自己才能成长。 -
到此,数据库就基本配置完成了,进入接下来的操作阶段。
-
-
20.4.2向数据库发送SQL语句
20.4.3处理查询结果集
20.4.4顺序查询
20.4.5模糊查询
20.4.6预处理语句
20.4.7添加、修改、删除记录
直接做了最后的案例
package com.ShuJuKu;
import java.sql.*;
public class Renewal {
static Connection con;
static PreparedStatement sql;
static ResultSet res;
public Connection getConnection(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}catch (ClassNotFoundException e){
e.printStackTrace();
}
try{
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName" +
"=test", "xxx","xxxx");
System.out.println("数据库连接成功");
Statement sql=con.createStatement();
}catch (SQLException e){
e.printStackTrace();
}
return con;
}
public static void main(String[] args) {
Renewal c=new Renewal();
con=c.getConnection();
try{
sql=con.prepareStatement("select*from table_1");
res=sql.executeQuery();
System.out.println("执行增加、修改、删除前数据:");
/*while(res.next()){
String id=res.getString(1);
String name=res.getString("name");
String sex=res.getString("sex");
String birthday=res.getString("birthday");
System.out.println("编号:"+id);
System.out.println("姓名:"+name);
System.out.println("性别:"+sex);
System.out.println("生日:"+birthday);
}*/
sql=con.prepareStatement("insert into table_1 values(?," +
"?,?,?)");
sql.setInt(1,10);
sql.setString(2,"张宏");
sql.setString(3,"女");
sql.setString(4,"1993-10-20");
sql.executeUpdate();
sql=con.prepareStatement("insert into table_1 values(?," +
"?,?,?)");
sql.setInt(1,10);
sql.setString(2,"焦某");
sql.setString(3,"男");
sql.setString(4,"1998-08-24");
sql.executeUpdate();
sql=con.prepareStatement("update table_1 set birthday = " +
"? where id = ?");
sql.setString(1,"1994-11-02");
sql.setInt(2,2);
sql.executeUpdate();
/*sql=con.prepareStatement("delete from table_1 where
" +
"id =" +
" ?");
sql.setInt(1,1);
sql.executeUpdate();*/
sql=con.prepareStatement("select * from table_1");
res=sql.executeQuery();
System.out.println(" 执行增加、修改、删除后的数据:");
while(res.next()){
String id=res.getString(1);
String name=res.getString("name");
String sex=res.getString("sex");
String birthday=res.getString("birthday");
System.out.println("编号:"+id);
System.out.println("姓名:"+name);
System.out.println("性别:"+sex);
System.out.println("生日:"+birthday);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
仅限于运行成功,由于对数据库的知识太过缺乏,玩不太转。
数据库入门到此为止,只是简单地了解了一下。
今天 休息了一天,明天开始刷leetcode和看数据结构。
本文介绍了数据库的基本知识,包括数据库的定义、种类和功能。详细讲解了SQL语言,包括SELECT、INSERT、UPDATE和DELETE等语句。此外,还深入探讨了JDBC在Java中连接数据库的角色,如JDBC-ODBC桥、JDBC驱动程序类型以及常用类和接口如Connection、Statement和ResultSet。文中通过实际的Java代码示例展示了如何进行数据库连接、发送SQL语句以及处理查询结果。在遇到连接数据库的问题时,作者分享了解决方案和经验,强调了遇到问题时保持冷静和理解的重要性。
5798

被折叠的 条评论
为什么被折叠?



