JDBC连接数据库学习心得

1.    环境的搭建

首先在intelliJADE下新建工程,并且在工程根目录下创建lib包,lib包用于存放JDBC的jar包,以及以后其他工具jar包.将jar包存入并且导入环境配置后进行下一步

2.数据库连接mysql有两种方式

(1).通过在页面写数据库连接语句连接数据库.

优点:当你刚刚搭设好环境用于测试的情况下,这几句话非常方便.连接数据库的基本步骤与语句是JDBC的基础,后面的Util类里面的方法也是基于这个基础封装的.

缺点:如果你要进行项目开发,每一个需要对数据库进行操作的方法与类都需要写一遍,而且如果数据库的密码路径发生更改,需要每一个写了这些语句的地方都需要更改.费时费力容易出错.

(2).通过创建一个JdbcUtil类,将数据库连接与关闭的方法包装进去,并且将数据库的地址与账户信息,写到一个文本文件中,并用JdbcUtil类里的方法去读取与调用.

优点:1.在项目开发中,创建Util这个连接类之后,每次需要对数据库进行操作的时候,可以直接调用这个Util连接类,通过里面封装好的方法可以轻松对数据库进行访问,避免了大量的代码冗余,

2.如果数据库的路径与账户信息发生改变,只需要对文本文件进行改动即可,极大的方便了操作,也减少了出错的机会

3.符合java的封装思想

2.1简述JDBC连接数据库的两种方式

(1).在页面写数据库连接语句连接数据库

[1].注册驱动,由于驱动是分厂家的,有重复性的操作,推荐使用类对象

Class.forname("com.mysql.jdbc.Driver");

//上面这句话会将这个类先加载进内存,之后此类的静态代码块就会执行,在静态代码块中就已经有了注册驱动的代码

[2].建立连接并且获取连接对象

Connectionconn = DriverManager.getConnection(path);

path的三种写法

第一种:

path="jdbc:mysql://localhost:3306/jdbc?user=root&password=newpass"

localhost:3306为数据库的地址与端口号,如果是本地数据库那么默认用localhost,本地默认端口号3306.如果是网络上的数据库,比如Linux虚拟机里的则需要填写他们的ip地址例如:172.16.110.129

端口号/jdbc.此jdbc为数据库名称

?连接的是参数 &在参数与参数之间起到连接作用

user与password都是参数名

root与newpass都是参数值

如果数据库的编码不是utf8那么在通过Java代码去访问数据库进行增删改查的时候,需要传输汉字,那么在?后面应该加上编码规则?characterEncoding=UTF-8,这样数据库可以识别Java传过来的汉字

第二种:

path=""jdbc:mysql://localhost:3306/jdbc","root","newpass""

数据库的地址与登录的用户名和信息分别用双引号括起来进行区分,这样可以不用输入?和&也不用输入参数名,只需要输入账号和密码并且用双引号括起来即可.

第三种:

创建一个Properties对象用来存储参数,用户名和密码

Propertiesproperties = new Properties();
//以key-value的方式存储
properties.setProperty("user", "root");
properties.setProperty("password","newpass");

这样在DriverManger.getConnection()里面就需要写

("jdbc:mysql://数据库地址(localhost/网络ip):端口号(本机默认3306)/所选择的数据库名称")

[3].根据连接对象,获得Statement对象

Statementstmt = conn.creatStatement();

[4].由statement对象执行sql语句

例如:

statement.execute("CREATE TABLE stu("id INT PRIMARYKEY , name VARCHAR(50), age INT )");

ResultSet resultSet =stmt.executeQuery("SELECT * FROM stu;");

对于查询语句,需要使用executeQuery进行操作,以及需要调用ResultSet这个类去接收查询结果

//输出当前resultset指针所在位置
System.out.println(resultSet.getRow());
//next后的位置
resultSet.next();
//previous后的位置
resultSet.previous();

可以使用while循环遍历搜索结果

while (resultSet.next()) {
    System.out.println("id:" + resultSet.getInt("id") +
            " name:" + resultSet.getString("name") +
            " age:" + resultSet.getInt("age"));
}

[5].对数据库进行操作之后要进行关闭流操作

conn.close;

stmt.close;

rs.close;

以上五个步骤为直接在类里创建数据库连接,并且进行了插入和查询两个步骤的完整方法

(2).通过创建JdbcUtil类对数据库进行连接

[1].创建一个类,类名是JdbcUtil,并且在src文件夹下创建Properties名字为jdbcfg

[2]打开JdbcUtil开始编写连接,创建静态代码块

//驱动类的路径
private static StringdriverClass=null;
//连接数据库使用的url
private static Stringurl = null;
//用户名和密码
private static Stringuser = null;
private static String password = null;
private static Connection conn = null;

//提前声明是因为之后在catch还需要用到
static {
    try {
        ClassLoader cl = Jdbcutil.class.getClassLoader();
        InputStream stream =cl.getResourceAsStream("jdbcfg.properties");
        //得到流中的数据
        //创建一个Properties对象
        Propertiesprop = new Properties();
        //通过Properties对象的Load方法,加载流中的数据
        prop.load(stream);
        //根据key,获得value
        driverClass = prop.getProperty("driverClass");
        url = prop.getProperty("url");
        user = prop.getProperty("user");
        password = prop.getProperty("password");
        Class.forName(driverClass);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
//写一个静态方法,获取连接对象
public static Connection getConnection() throwsSQLException {
    return DriverManager.getConnection(url,user,password);
}
//写一个静态方法,获得stmt对象
public static Statement getStatment() throwsSQLException {
    conn = getConnection();
    return conn.createStatement();
}
public static void release(){
    if (conn!=null){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
public static void release(Statementstmt){
    release(stmt,null);
}
//写一个静态方法,用来释放资源
//如果想要释放Connection,需要调用Connection对象的close方法
//所以需要将Connection对象传入release方法,
//然后在release方法中调用该对象的close方法,
//释放资源
//statment对象与ResultSet对象同理
public staticvoid release( Statement stmt, ResultSet rs){
    release();
    if (stmt!=null){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    if (rs!=null){
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

2.2通过创建JdbcUtil类之后,以后的操作可以直接调用而不需要重新创建连接

JDBC连接数据库学习心得相关推荐

  1. JDBC基础(学习心得)

    一.简介 JDBC,全称为Java DataDase Connectivity(Java数据库连接),它可以连接Sql Server , MySql , Oracle , Java提供了很多接口 , ...

  2. JDBC的学习(第二节:JDBC连接数据库 )

    本次的学习主要分为九个部分 第一节:JDBC的概述 第二节:JDBC连接数据库 第三节:使用Statement接口实现增.删.改操作 第四节:使用PreparedStatement接口实现增.删.改的 ...

  3. jsp学习 jdbc连接数据库实现登录注册

    在数据库层面后端方法可以实现的数据验证,在jsp页面也可以简单的实现这个操作,上一次咱们测试过在jsp页面实现jdbc连接数据库,具体请看我的文章:http://t.csdn.cn/ShDee 本次我 ...

  4. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  5. Java入门1.2.3—一个老鸟的Java学习心得

    Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌    出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...

  6. sping jdbc 链接mysql_Spring Boot JDBC 连接数据库示例

    文本将对在spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. JDBC 连接数据库 1.属性配置文件( ...

  7. java hibernate4 学习心得

    一直在学习asp.net mvc但很多都无法理解,同时网上说的架构asp.netmvc+spring.net+nhibernate架构比较牛,但学习了很久总是觉得不明白,而且文档也很少,就转入了mvc ...

  8. java入门123 pdf下载_Java入门123:一个老鸟的Java学习心得 pdf_IT教程网

    资源名称:Java入门123:一个老鸟的Java学习心得 pdf 第1篇 Java语言基本语法 第1章 让自己的第一个Java程序跑起来 第2章 搭建自己的集成开发环境 第3章 Java中的基本数据类 ...

  9. db2 jdbc 连接池_db2 jdbc连接数据库

    DB2的JDBC连接驱动与URL总结 依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开 ...

最新文章

  1. java生成缩略图类源码
  2. linux系统中离线安装python3.7过程记录
  3. Python 中异常嵌套
  4. Java内存模型深度解析:锁--转
  5. web 日志分析工具 awstats 简单安装
  6. 使用临时表的另外一种方式
  7. [图形]图形API的两种模式
  8. (转)编写Spring的第一个案例并测试Spring的开发环境
  9. 如何用阿里云服务器建立一个wordpress网站?
  10. php表单验证插件下载,强力推荐10款Javascript表单验证插件
  11. CherryTree:一款免费开源的富文本笔记软件
  12. Martin Fowler微服务论文--译文
  13. 130行Python代码模仿“蚂蚁呀嘿”特效,太魔性了!
  14. Java LocalDateTime给当前时间加半小时
  15. kubernetes dev client-go 进入pod执行命令
  16. idea中js函数中使用EL表达式报错expression expected以及参数underfined的问题.md
  17. 无人机云台电机用的是哪种?
  18. 最简单的平面制图用什么软件_视频解说不想自己录,用什么简单好用的配音软件制作?...
  19. 最便捷的神经网络可视化工具之一--Flashtorch
  20. BIM Revit2018软件安装激活教程

热门文章

  1. caged系统pdf_经度之战.PDF
  2. 设计师必备的ICON素材搜索引擎推荐
  3. Center Invariant Loss
  4. 【资料下载】133个各行业脑图精华免费下载
  5. 一份APT报告里有什么?
  6. 【可穿戴算法开发】-PPG信号检测方法
  7. 电子名片如何用一片文章完成拓客引流
  8. 云服务器(云数据库)连接Mysql数据库【超详细-少踩雷】
  9. Cassini Creates New wireless Maps of Saturn’s Moons
  10. adsp gsensor 校准失败问题