jdbc(mysql)数据库连接
0.将驱动引入项目
- 在项目根目录新建文件夹lib,把数据库驱动mysql-connector-java-5.1.7-bin.jar放入该文件夹。
- 右键点击项目名称->properties->Java Build Path->Libraries->Add JARs->找到驱动文件->搞定
什么是mysql-connector-java-5.1.7-bin.jar?
数据库驱动。
为什么要另外引入一个jar包,sun公司怎么没有实现这些功能?
因为市面上有很多数据库,mysql oracle sqlserver,每个数据库内部实现不同,sun公司提供标准接口,数据库提供商负责实现接口,把所有实现类打包成.jar文件。有了这个jar包,java程序就可以驱动着数据库做事。
*1.加载驱动
* 也叫注册驱动
* Class.forName("com.mysql.jdbc.Driver")
*
*2.获取连接对象
* Connection conn = DriverManager.getConnection("url",user,password);
例如:jdbc:mysql://127.0.0.1:3306/myschool
* url - jdbc:subprotocol:subname 形式的数据库 url
- URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
- 也可认为由4部分组成:协议、主机、端口、路径
- URL的一般语法格式为:
- (带方括号[]的为可选项):
- protocol :// hostname[:port] / path / [;parameters][?query]#fragment
*3.获取sql执行器对象
* Statement 对象
* Statement statement = conn.createStatement();
*PreparedStatement(Statement的子接口)表示预编译的sql语句的对象,
*SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
*PreparedStatement pst = conn.prepareStatement(sql);
(相对于statement执行器对象)
1.代码可读性性高,由于是预编译sql语句对象,可以设置占位符
2.解决了statement拼串造成的sql 注入安全问题
3.由于是预编译之后发送的,减轻了服务器压力,提高了程序性能
*CallableStatement(PreparedStatement 的子接口)--用于执行sql存储过程的接口
String sql = "call pro_…"
* CallableStatement cas = conn.prepareCall(sql)
*4.执行并返回处理结果
* 增删改 sql语句 executeUpdate()-->返回值为sql语句操作的数据行数,行数为0则数据库指令操作不成功
* 查询sql语句-->executeQuery()-->返回java.sql.ResultSet结果集对象,你所查询的表数据
* 用next方法判断数据库结果集中是否有下一行元素,光标最初位于第一行之前
*
*5.关闭资源
* 关闭资源的顺序,先创建的后关闭
* 增删改sql语句 ----只需要关闭连执行器(Statement/PrepareStatement)和连接对象(Connection)
* 查询 ,需要关闭ResultSet结果集对象,执行器对象(Statement/PrepareStatement)和连接对象(Connection)
package com.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
*1.加载驱动
* 也叫注册驱动
* Class.forName("com.mysql.jdbc.Driver")
*
*2.获取连接对象
* Connection conn = DriverManager.getConnection("url",user,password);
* url - jdbc:subprotocol:subname 形式的数据库 url
*
*3.获取sql执行器对象
* Statement 对象
* Statement statement = conn.createStatement();
*
*4.执行并返回处理结果
* 增删改 sql语句 executeUpdate()-->返回值为sql语句操作的数据行数,行数为0则数据库指令操作不成功
* 查询sql语句-->executeQuery()-->返回java.sql.ResultSet结果集对象,你所查询的表数据
* 用next方法判断数据库结果集中是否有下一行元素,光标最初位于第一行之前
*
*5.关闭资源
* 关闭资源的顺序,先创建的后关闭
* 增删改sql语句 ----只需要关闭连执行器(Statement/PrepareStatement)和连接对象(Connection)
* 查询 ,需要关闭ResultSet结果集对象,执行器对象(Statement/PrepareStatement)和连接对象(Connection) * @author Administrator
*
*/
public class Test05 {
public static void main(String[] args) {
//1.加载驱动/注册驱动
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2.连接对象,在捕获异常外声明该对象,后续方法关闭该对象
Connection connection = null;
//3.执行器对象 ,在捕获异常外声明该对象,后续方法关闭该对象
Statement statement = null;
try {
//获取连接对象
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool","root","root");
System.out.println("连接数据库成功");
//获取执行器对象
statement=connection.createStatement();
//sql执行器对象用来向数据库发送sql语句,并执行sql语句,带有int返回值executeUpdate();
String sql = "update grade set gradename='9年级' where gradeid=9";
int count =statement.executeUpdate(sql);
if(count>0){
System.out.println("修改成功 ");
}else{
System.out.println("修改失败");
} } catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接失败");
}finally{
//先创建的后关闭
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
}
jdbc(mysql)数据库连接的更多相关文章
- Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
相关 知识 >>> 相关 练习 >>> 实现要求: 使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执 ...
- jdbc java数据库连接 3)Statement接口之执行DDL和DML语句的简化
上一章的代码中,可以发现,jdbc执行DDL和DML有几个步骤都是一样的: 1)执行语句开始时,创建驱动注册对象.获取连接的数据库对象.创建Statement对象 // 创建驱动注册对象 Class. ...
- 一个简单的MySql数据库连接池的实现
package cn.hc.connectionPool; import java.io.IOException; import java.io.InputStream; import java.sq ...
- JDBC + MySQL 示例
jdbc mysql connection 教程 翻译自:JDBC MySQL Connection Tutorial Java Database Connectivity (JDBC) 是一个基于J ...
- jdbc mysql crud dao模型 sql注入漏洞 jdbc 操作大文件
day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一 ...
- 数据库连接JDBC和数据库连接池C3P0自定义的java封装类
数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...
- mysql数据库连接池 手动编写
源码来源于http://www.toutiao.com/a6350448676050174209/,留存以供以后参考学习 先上一张项目托普图 然后分别列出各个文件的源码: MyPool.java(就是 ...
- 查找Mysql数据库连接jar包和对应的Driver和Url
以前写jdbc连接向来都是直接copy,对于连接数据库的jar包在哪下载,对应的Driver类是哪一个,数据库连接串怎么找等等都没有做过,今天从零开始整了一遍. 使用的数据库是Mysql 一.已安装了 ...
- mysql 数据库连接池
hibernate配置C3P0详解 分类: hibernate 2013-08-14 16:16 1213人阅读 评论 ...
- MySql数据库连接池
1.传统链接(如下为示意图) 注意: (1).传统方式找DriverManager要连接,数目是有限的. (2).传统方式的close(),并没有将Connection重用,只是切断应用程序和数据库的 ...
随机推荐
- Angular vs React---React-ing to change
这篇文章的全局观和思路一级棒! The Fairy Tale Cast your mind back to 2010 when users started to demand interactive ...
- [Algorithm] 242. Valid Anagram
Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: ...
- (尚034)Vue_案例_数据存储优化(代码优化!!!)
最好能将上述代码抽取成一个模块(读json数据+写json数据) 1.在src下新建文件夹util(util文件夹用于放入工具的模块) 2.*使用localStorage存储数据的工具模块* 一个模块 ...
- bzoj3745: [Coci2015]Norma 分治,单调队列
链接 bzoj 思路 首先\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}\sum\limits_{k=i}^{j}max(a_k)\)可以用单调队列求解.参见 ...
- shell 文件的包含
使用.或者source api.sh function intadd() { let data=$+$ echo $data } test.sh #!/bin/bash . api.sh read d ...
- 分析WordPress数据表之文章表(功能篇)
数据表分析 wp_posts(文章表) 表字段如下:ID(文章ID)post_author(文章作者名,我想可以是为用户名,也可以是用户ID)post_date(文章发布日期)post_date_gm ...
- python 五星红旗
import turtle turtle.setup(600,400,0,0) turtle.bgcolor("red") turtle.fillcolor("yello ...
- Java多次启动相同jar程序
背景 现在很多软件都支持集群部署,但是测试环境通常资源有限,所以一般通过单台机器模拟集群部署(使用不同端口,运行相同jar包),本文的目的就是通过多种方式实现此需求. 两个程序 1.jar程序 ① s ...
- Element + Vue I18n动态import加载国际化语言包翻译文件
需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...
- 【深入学习linux】Linux系统安装
1. 配置内存大小,和设置镜像文件,开启虚拟机,点击虚拟机,立即按F2,会出现下图 2. 选择 Boot 菜单,默认是以硬盘进行启动,但是硬盘目前为空,则不能启动,需要改成以光盘形式启动即 CD-RO ...