JDBC链接mysql数据库

Unit_1

首先:JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范。

JDBC与数据库驱动的关系是接口与实现的关系。

JDBC涉及到四个核心的对象

1:DriverManager:注册数据库驱动

2:Connection:表示与数据库创建的连接

3:Statement:操作数据库sql语句的对象 一般使用他的子类PreparedStatement来解决“sql注入的问题”

4:ResultSet:翻译过来是结果集的意思,经常用来装载从数据库中获取的一些信息  如select语句得到的结果

一、DriverManager

注册数据库有两种方式:

①:DriverManager.registerDriver(new com.mysql.jdbc.Driver());这种方法我们通过Ctrl点击源码后发现在底层会注册2次驱动,需要导入相对应的jar包

②:Class.forName("com.mysql.jdbc.Driver");   通过发射机制直接加载驱动类,较常用的方式

二、Connection

获取数据库连接Connection,如下代码,试图连接到给定的数据库的URL的连接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu","root","123456");

jdbc:mysql://localhost:3306/stu

协议:子协议://主机地址:端口号/数据库

通常我们在实际开发中会把数据库的相关配置写在配置文件之中

三、Statement(子类PreparedStatement)

接口的实现在数据库驱动中。用于执行静态 SQL 语句并返回它所生成结果的对象。

ResultSet  executeQuery(String sql) 根据查询语句返回结果集。只能执行select语句。

int executeUpdate(String sql) 根据执行的DML(insert update delete)语句,返回受影响的行数。

boolean execute(String sql)  此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true, 其它语句都返回false;

PreparedStatement是一种预编译的机制,通过查询文档发现它是Statement的子类接口

特点:会把写好的sql语句事先编译并且sql语句中的参数有时发生变化可以过滤掉用户输入的关键字

如:String sql = "select * from student where name=? and password=?";

使用?代替用户的输入或者要查询的表单项

四、ResultSet

a、封装结果集的。

提供一个游标,默认游标指向结果集第一行之前。

调用一次next(),游标向下移动一行。

提供一些get方法。

封装数据的方法

Object getObject(int columnIndex); 根据序号取值,索引从1开始

Object getObject(String ColomnName); 根据列名取值。

将结果集中的数据封装到javaBean中

java的数据类型与数据库中的类型的关系

byte          tityint

short         smallint

int           int

long          bigint

float         float

double        double

String        char varchar

Date         date

boolean next() 将光标从当前位置向下移动一行

int getInt(int colIndex)   以int形式获取ResultSet结果集当前行指定列号值

int getInt(String colLabel)     以int形式获取ResultSet结果集当前行指定列名值

float getFloat(int colIndex)    以float形式获取ResultSet结果集当前行指定列号值

float getFloat(String colLabel)      以float形式获取ResultSet结果集当前行指定列名值

String getString(int colIndex)       以String 形式获取ResultSet结果集当前行指定列号值

String getString(String colLabel)  以String形式获取ResultSet结果集当前行指定列名值

Date getDate(int columnIndex);

Date getDate(String columnName);

void close()    关闭ResultSet 对象

b、可移动游标的方法

boolean next()  将光标从当前位置向前移一行。
 boolean previous()   将光标移动到此 ResultSet 对象的上一行。

boolean absolute(int row) 参数是当前行的索引,从1开始根据行的索引定位移动的指定索引行。

void afterLast()将光标移动到末尾,正好位于最后一行之后。

void beforeFirst()  将光标移动到开头,正好位于第一行之前。

上一个Demo:

  1 package cn.xisole;
  2
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.ResultSet;
  6 import java.sql.Statement;
  7 import java.util.Properties;
  8
  9 import org.junit.Test;
 10 /*
 11  使用JDBC技术实现查询数据库数据,并且显示在控制台处  三种方式如下
 12  注意  导包尽量导入接口
 13  1 注册驱动
 14  2 获取连接Connection
 15  3 得到执行sql语句的对象Statement
 16  4 执行sql语句,并返回结果
 17  5 处理结果
 18  6 关闭资源
 19  */
 20 public class jdbc_Demo1 {
 21     @Test
 22     public void test1() throws Exception {
 23
 24         /*1加载驱动  利用反射机制加载驱动类  建议使用此种方式
 25         Class.forName("com.mysql.jdbc.Driver");     //无jar驱动也可以*/
 26
 27         //1 注册驱动
 28         DriverManager.registerDriver(new com.mysql.jdbc.Driver());
 29
 30         //2 获取连接Connection
 31         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu","root","123456");
 32
 33         //3 得到执行sql语句的对象Statement
 34         Statement stmt = conn.createStatement();
 35         /*一般使用PreparedStatement*/
 36         //4 执行sql语句,并返回结果
 37         ResultSet rs = stmt.executeQuery("select * from student");
 38         System.out.println("id"+" name"+" password"+" email"+" brithday");
 39
 40         //5 处理结果
 41         while(rs.next()){
 42             System.out.println(rs.getObject("id")+" "+rs.getObject("NAME")+" "+rs.getObject("password")+" "+rs.getObject("email")+" "+rs.getObject("birthday"));
 43             //System.out.println(rs.getObject(1)+" "+rs.getObject(2)+" "+rs.getObject(3)+" "+rs.getObject(4)+" "+rs.getObject(5));
 44             System.out.println("-------------------------------");
 45         }
 46
 47         //6 关闭资源
 48         rs.close();
 49         stmt.close();
 50         conn.close();
 51     }
 52     @Test
 53     public void test2() throws Exception{
 54
 55         //1加载驱动  利用反射机制加载驱动类  建议使用此种方式
 56         Class.forName("com.mysql.jdbc.Driver");     //无jar驱动也可以
 57
 58         /*//1 注册驱动
 59         DriverManager.registerDriver(new com.mysql.jdbc.Driver());
 60         */
 61
 62         //2 获取连接Connection
 63         Properties info = new Properties();
 64         info.setProperty("user", "root");
 65         info.setProperty("password", "123456");
 66         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu",info);
 67
 68         //3 得到执行sql语句的对象Statement
 69         Statement stmt = conn.createStatement();
 70
 71         //4 执行sql语句,并返回结果
 72         ResultSet rs = stmt.executeQuery("select * from student");
 73         System.out.println("id"+" name"+" password"+" email"+" brithday");
 74
 75         //5 处理结果
 76         while(rs.next()){
 77             System.out.println                (rs.getObject(1)+" "+rs.getObject(2)+" "+rs.getObject(3)+" "+rs.getObject(4)+" "+rs.getObject(5));
 78             System.out.println("-------------------------------");
 79         }
 80
 81         //6 关闭资源
 82         rs.close();
 83         stmt.close();
 84         conn.close();
 85
 86     }
 87     @Test
 88     public void test3() throws Exception{
 89
 90         //1加载驱动  利用反射机制加载驱动类  建议使用此种方式
 91         Class.forName("com.mysql.jdbc.Driver");     //无jar驱动也可以
 92
 93         //2 获取连接Connection
 94
 95         Connection conn = DriverManager.getConnection                             ("jdbc:mysql://localhost:3306/stu?user=root&password=123456");
 96
 97         //3 得到执行sql语句的对象Statement
 98         Statement stmt = conn.createStatement();
 99
100         //4 执行sql语句,并返回结果
101         ResultSet rs = stmt.executeQuery("select * from student");
102         System.out.println("id"+" name"+" password"+" email"+" brithday");
103
104         //5 处理结果
105         while(rs.next()){
106             System.out.println(rs.getObject(1)+" "+rs.getObject(2)+" "+          rs.getObject(3)+" "+rs.getObject(4)+" "+rs.getObject(5));
107             System.out.println("-------------------------------");
108         }
109
110         //6 关闭资源
111         rs.close();
112         stmt.close();
113         conn.close();
114     }
115 }

个人对JDBC的简单总结:

在笔者的理解中,将jdbc当成运输货物的过程规范,数据库里的数据就是我们要运输的,首先要有驾照才能允许运输(Class.forName(com.mysql.jdbc.Driver))

其次是有那么一条路通向哪个数据库以及访问数据库所需要的用户名和密码,DriverManager.getConnection(url,user,password);此方法返回的是Connection对象

之后我们需要一个类似于“货品清单”(Statement),告诉货车到了之后我们是直接对仓库进行一些什么样的操作,需不需要在货车回来的时候带什么数据回来,

如果需要的话使用货车的车厢(ResultSet )来把从仓库中得到的数据带回来。如果不需要的话就释放资源,如JAVA SE中的IO流操作类似,先建立的连接后close()

以上属于最近几天自学的个人总结,如有不足之处请大家多多指教。 -isole

时间: 2024-12-09 05:29:07

JDBC链接mysql数据库的相关文章

JDBC链接Mysql数据库+执行sql

package com.wangbingan.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /**  * JDBC链接数据库  *   * @author Administrator  *   */ public class JdbcUtil { public static void main(Strin

JDBC链接Mysql数据库+执行sql(mac)

package com.wangbingan.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcUtil { public static void main(String args[]) throws Exception { Connection conn = null; //

使用Java jdbc 链接mysql数据库过程

1.创建工程,下载mysql驱动包添加到classpath; 2.主要步骤: a.加载驱动 class.forName("com.mysql.jdbc.Driver"); b.使用该驱动连接到数据库,参数包括数据库路径,用户名,密码 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/3306/gaoxiangyu","root","root&quo

最简单的一个java驱动jdbc链接mysql数据库

导入jar包:mysql.connector-java-5.0.8-bin.jar String driver = "com.mysql.jdbc.Driver"; String url= "jdbc:mysql://127.0.0.1:3306/ali"; Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, "root&q

JSP使用UTF-8链接MYSQL数据库(UTF8)乱码以及连接失败问题以及更改mysql默认编码

JSP使用UTF-8链接MYSQL数据库(UTF8)乱码以及连接失败问题: 前言,服了这些大公司,做的数据库都不人性化...我忙了很久才搞定的说 csdn好像传不了图片了...本来想来几张的,大家将就... 1.在windows下mysql的数据库是utf8编码的时候,连接失败(注意mysql中不是UTF-8,而是utf8) 情况,显示?在网页上(网页设置的UTF-8编码) 用户ID号码 用户名称 用户密码 用户地址 47 g? 1243 null 48 ? 1243 null 49 ?123

使用JDBC在MySQL数据库中快速批量插入数据

使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch() throws SQLException Adds a set of parameters to this PreparedStatement object's batch of commands. int[] executeBatch() throws SQLException Submits

php链接Mysql数据库

PHP链接Mysql数据库: 1:首先打开软件(WampServer再点击鼠标左键,再点phpMYAdmin最后打开的页面是 再填用户名,密码可以写不可写,最后再点执行就出现这个页面 再点test新建表名)最后就在mysql里面创建表格,在表格里面可以添加数据.查询数据.删除数据.修改数据 例: (1):添加数据INSERT INTO `message`(`id`, `user`, `title`, `content`, ` lda te`) VALUES ('','张三','学习php','飞

(详细)JAVA使用JDBC连接MySQL数据库(1)- 软件

欢迎任何形式的转载,但请务必注明出处. 1.jdk 点击查看安装和环境配置教程 2.Eclipse 点击进入官网下载 注意下载完成打开.exe后,出现下图界面,有很多版本供选择 本人目前在学JSP所以安装的是Java EE版本,初学者可以选择第一个Java Developers版本 3.Mysql 点击进入官网下载 点击进入推荐安装教程+环境配置 下载页面注意事项 (虽然选项只有32位的,但下载完成后32位和64位都会安装) (上面的是在线安装,下面的是离线安装,建议选择离线安装) 系列文章 (

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的