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:


(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),(使用完点击-停止).如下图所示。


(1)启动此软件
(2)进行”启动”


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

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

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

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



(1)启动软件(考试时只启动它)


(2)点击左上角-连接

  (2)建立数据库

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


(1)

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


(2)

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


(1)

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


(2)

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

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

       名age,类型int.

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

如下图所示。


(3)

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


(1)


(2)

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


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


在左边有个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();

}

}

}

结果如下图:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容