JDBC在java.sql包中。
DriverManager类在java.sql包中。
加载驱动程序使用的是java.lang包中的Class类的forName()方法,加载JDBC驱动程序。
1.JDBC的介绍
2.JDBC连接数据库
3.数据处理
4.综合实例
?具体怎么安装的Mysql以及找到所需要的包,以后学习看课本或者查资料。
1.JDBC的介绍
(1)在应用中,java会连接数据库,以实现一些应用软件设计。也就是常说的Java做前端,数据库管理系统做后台的应用系统。这样的好处就是:数据库管理系统可以完成大量数据的存储和处理,Java做前端也可以达到界面友好、一般用户能较容易与计算机交互的目的。
(2)java连接数据库,java语言是通过JDBC(Java DataBase Connectivity)实现与数据库系统的连接。
JDBC是java数据库连接规范,是一种可执行SQL语句的Java API,由一些Java语言写的类和接口组成,在java.sql包中。
(3)常用的JDBC:
(3)JDBC可以完成的功能:
1.与数据库的连接。
(Connettion conn = null;
try{
conn = (Connection)DriverManager.getConnection(url ,user,password;);
})
2.向数据库发送sql语句。
3.处理数据库返回的结果。(Resultset 一般是在查询操作中)
[PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = psmt3.executeQuery();
]
(4)JDBC访问数据库的类型【共3种】(一般是采用第二种(JDBC直接与数据库连接),即Java编写的驱动程序直接与数据库连接)
查询语句(显示记录):
(1)select * from st; //查询表st中的所有元素,即会显示表st的所有信息
select * from st where major = "computer";//查询表st中的专业是计算机的所有元素,即显示表st中专业是computer的所有人。
注:这个major 可以改为其他的元素,例如name ,age,看题目要求查询什么。
2.与数据库的连接
例如:
String driver = "com.mysql.jdbc.Driver";//JDBC驱动程序
String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[数据库类型]://[数据库ip地址]:[数据库端口](默认是localhost_3306)/[数据库名](仅仅修改数据库名,其他不变)
String user ="root";
String password ="root";
Connection conn = null;
try {
Class.forName(driver);//2.加载JDBC驱动程序(此时会出现错误,修改错误,选择surround with try/catch)
conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息进行连接(此时还是会有错误,修改错误,选择Add Exception to existing catch caluse(选择SQLException[所有的数据库异常都叫做SQLException]),进行合并异常类型)(目前为止,连接完成)
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
3.数据处理
Statement
常用PreparedStatement进行格式化成数据库能识别的语句,即处理预编译的SQL语句。
关闭结果集:rs.close();
关闭连接:conn.close();
这些是写在try最后的。
实例:java与数据库的连接,实现基本的增删改查操作。
操作步骤:
(1)使用Mysql数据库 (navicat.exe软件)
1.先启动软件jspStudy,点击进入-启动(运行状态是Apach,Tomcat,Mysql),(使用完点击-停止).如下图所示。
2.启动navicat.exe,进行连接,然后建立数据库,建立表。
(1)单击连接,不写输入密码,不写连接名 ,就会生成默认的连接名localhost_3306.
无论使用哪个连接名,都不需要改动代码的信息。
也可以新建连接(例如本地数据)。类似电池的模样(代表连接),类似一摞硬币的代表数据 库,而绿色的硬币的数据库代表你当前使用的数据库。
(2)建立数据库
连接名(以localhost_3306为例) -右击 -新建数据库
在“”新建数据库“”弹出框中,输入数据库名(必须是英文名,可以有数字,不能是中文),然后选择好字符集(UTF-8 Unicode)[防止乱码] (如果忘记了,选择新建好的数据库-右击-数据库属性进行修改),点击确定。
点开数据库student1,下面有个“”表”-右击-新建表,在弹出框中,设置好数据。
首先设置主键,如下图所示,名id,类型int,左下角打钩自动递增,在那栏前面右击-选择主键,然后会“*”变成跟大写I似的,且最后有个钥匙,则设置主键成功。如下图所示。
然后进行设置其他表中的元素(抽象设置),选择上面菜单栏的“添加栏位”(此时栏位在下方)【如果选择插入栏位,则是往上插,可以通过菜单栏的“下移”调下来】,并且进行数据设置。
注:名name ,类型text (注意无string);
名age,类型int.
点击保存,输入表名st,点击确定,建表成功。
如下图所示。
如果再进行表的其他元素插入与设置,表st右击-设计表,进行元素插入设置。如下图。
最后,进行写入表中元素的具体数据(例如:名:张三 ,年龄:12),表st双击打开,就可以填入数据,填完选择最下面的对号,继续填入数据就是最下面选择“插入记录(此时是往上插,)”,填完数据,点击对号,选择最下面的“刷新”,就会降下来。
(2).在eclipse下进行编码,实现两者互动。
package JDBC;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
/*1.新建主类,程序都写在主类里
*2.导包(mysql-connector-java-5.1.45-bin.jar)(考试时包会在桌面上) 怎么找到的这个包?(后续学习)
*在自己所在的项目project(不是包中,是最外面的地方)中右击-Properties(属性)-java Build path-右边选择Add External jars(添加扩展包)
*则在中间编辑区会显示这个包。
* 3.编辑程序
* (1)设置好数据库的基本信息,再进行连接
* (2)进行操作:增加(插入),删除,修改,[这三个都是执行更新[executeUpdate()]]查询(注意返回一个结果集Resultset 进行executeQuery());
* (3)在执行时,执行一个,其他的就注销执行那条语句,查询操作放在最后,就可以显示出前面的执行操作做好的结果了
*/
//此处只执行了插入操作和查询操作,其他的注销了。
public class Test1 {
public static void main(String[] args) {
/*
* 1.设置要连接的数据库的基本信息
* (1.先设置好基本信息driver url(注意好localhost:3306这之间需要紧密相连,无空格,且是英文下的) user password 定义这四个变量,填好与数据库有关的信息)
* (2.连接Connection conn = null;)
*/
//1.设置基本信息
String driver = "com.mysql.jdbc.Driver";//JDBC驱动程序
String url ="jdbc:mysql://localhost:3306/student1";//jdbc:[数据库类型]://[数据库ip地址]:[数据库端口](默认是localhost_3306)/[数据库名](仅仅修改数据库名,其他不变)
String user ="root";
String password ="root";
Connection conn = null;
try {
//2.加载JDBC驱动程序(此时会出现错误,修改错误,选择surround with try/catch)
Class.forName(driver);
conn = (Connection)DriverManager.getConnection(url, "root", "root"); //3.把前面的信息进行连接(此时还是会有错误,修改错误,选择Add Exception to existing catch caluse(选择SQLException[所有的数据库异常都叫做SQLException]),进行合并异常类型)(目前为止,连接完成)
/*2.执行操作
* /
*/
//插入操作
//如果插入多条信息,直接插入,和这个一样。
String sql ="insert into st(name,age) values(?,?)";//sql插入语句
PreparedStatement psmt = (PreparedStatement) conn.prepareStatement(sql); //转换成数据库能识别的语句(2个大写的PreparedStatement,1个小写的)
psmt.setString(1, "王五");
psmt.setString(1, "李六");
psmt.setInt(2, 34);
psmt.setInt(2, 44);
psmt.executeUpdate();
//删除操作
sql = "delete from st where name = ?";
PreparedStatement psmt1 = (PreparedStatement) conn.prepareStatement(sql);
psmt1.setString(1, "张三");//对应sql定义语句的位置从1开始
//psmt1.executeUpdate();
//修改操作
sql = "update st set age =? where name = ?";
PreparedStatement psmt2 = (PreparedStatement) conn.prepareStatement(sql);
psmt2.setInt(1, 34);
psmt2.setString(2, "李四");
//psmt2.executeUpdate();//别忘记更新信息执行
//查询操作
sql = "select * from st";
PreparedStatement psmt3 = (PreparedStatement) conn.prepareStatement(sql);
ResultSet rs = psmt3.executeQuery(); //执行查询会返回一个结果集[这个是与其他操作的区别]
while(rs.next()){
System.out.println("姓名:"+rs.getString(2));//数据库中从1开始
System.out.println("年龄:"+rs.getInt(3));
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果如下图: