2017-12-28 数据库连接-JDBC

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:


2017-12-28 数据库连接-JDBC_第1张图片

(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();

]

2017-12-28 数据库连接-JDBC_第2张图片


(4)JDBC访问数据库的类型【共3种】(一般是采用第二种(JDBC直接与数据库连接),即Java编写的驱动程序直接与数据库连接)



2017-12-28 数据库连接-JDBC_第3张图片

查询语句(显示记录):

(1)select * from st; //查询表st中的所有元素,即会显示表st的所有信息

        select * from st where major  = "computer";//查询表st中的专业是计算机的所有元素,即显示表st中专业是computer的所有人。

注:这个major 可以改为其他的元素,例如name ,age,看题目要求查询什么。 

2.与数据库的连接


2017-12-28 数据库连接-JDBC_第4张图片

例如:

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语句。



2017-12-28 数据库连接-JDBC_第5张图片
2017-12-28 数据库连接-JDBC_第6张图片


2017-12-28 数据库连接-JDBC_第7张图片

关闭结果集:rs.close();

关闭连接:conn.close();

这些是写在try最后的。



实例:java与数据库的连接,实现基本的增删改查操作。

操作步骤:

(1)使用Mysql数据库  (navicat.exe软件)

         1.先启动软件jspStudy,点击进入-启动(运行状态是Apach,Tomcat,Mysql),(使用完点击-停止).如下图所示。


(1)启动此软件
2017-12-28 数据库连接-JDBC_第8张图片
(2)进行”启动”


        2.启动navicat.exe,进行连接,然后建立数据库,建立表。

       (1)单击连接,不写输入密码,不写连接名 ,就会生成默认的连接名localhost_3306.

          无论使用哪个连接名,都不需要改动代码的信息。

          也可以新建连接(例如本地数据)。类似电池的模样(代表连接),类似一摞硬币的代表数据         库,而绿色的硬币的数据库代表你当前使用的数据库。



2017-12-28 数据库连接-JDBC_第9张图片
(1)启动软件(考试时只启动它)


2017-12-28 数据库连接-JDBC_第10张图片
(2)点击左上角-连接

  (2)建立数据库

      连接名(以localhost_3306为例) -右击 -新建数据库 


2017-12-28 数据库连接-JDBC_第11张图片
(1)

在“”新建数据库“”弹出框中,输入数据库名(必须是英文名,可以有数字,不能是中文),然后选择好字符集(UTF-8 Unicode)[防止乱码] (如果忘记了,选择新建好的数据库-右击-数据库属性进行修改),点击确定。


2017-12-28 数据库连接-JDBC_第12张图片
(2)

点开数据库student1,下面有个“”表”-右击-新建表,在弹出框中,设置好数据。


2017-12-28 数据库连接-JDBC_第13张图片
(1)

首先设置主键,如下图所示,名id,类型int,左下角打钩自动递增,在那栏前面右击-选择主键,然后会“*”变成跟大写I似的,且最后有个钥匙,则设置主键成功。如下图所示。


2017-12-28 数据库连接-JDBC_第14张图片
(2)

然后进行设置其他表中的元素(抽象设置),选择上面菜单栏的“添加栏位”(此时栏位在下方)【如果选择插入栏位,则是往上插,可以通过菜单栏的“下移”调下来】,并且进行数据设置。

注:名name ,类型text (注意无string);

       名age,类型int.

点击保存,输入表名st,点击确定,建表成功。

如下图所示。


2017-12-28 数据库连接-JDBC_第15张图片
(3)

如果再进行表的其他元素插入与设置,表st右击-设计表,进行元素插入设置。如下图。


2017-12-28 数据库连接-JDBC_第16张图片
(1)


2017-12-28 数据库连接-JDBC_第17张图片
(2)

最后,进行写入表中元素的具体数据(例如:名:张三 ,年龄:12),表st双击打开,就可以填入数据,填完选择最下面的对号,继续填入数据就是最下面选择“插入记录(此时是往上插,)”,填完数据,点击对号,选择最下面的“刷新”,就会降下来。


2017-12-28 数据库连接-JDBC_第18张图片
(3)

(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(添加扩展包)


2017-12-28 数据库连接-JDBC_第19张图片
在左边有个Referenced Libraries下就会有导入的包,则表示

*则在中间编辑区会显示这个包。

* 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();

}

}

}

结果如下图:


2017-12-28 数据库连接-JDBC_第20张图片

你可能感兴趣的:(2017-12-28 数据库连接-JDBC)