JDBC的连接mySql的基本知识
这只是我自己的随笔博客~,用于偶尔回忆知识,可能存在一些错误,如有错误,欢迎指正~
首先对于JDBC连接MySQL,要了解基本的框架结构

画的比较烂,大约就是这样的结构
然后看一下具体实现的 代码:;
public class DBUtil {
private String user = "root";
private String password = "root";
private String url = "jdbc:mysql://localhost:3306/mydb6";
private static DBUtil dbUtil;
Connection connection = null;
// 单例:构造方法私有化
private DBUtil() {
}
public synchronized static DBUtil getInstance() {
if (dbUtil == null) {
dbUtil = new DBUtil();
}
return dbUtil;
}
/**
* 创建数据库连接
*/
public Connection getConnection() {
if (connection == null) {
try {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取连接
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return connection;
}
}
上面这个是通过单例模式 建立了DBUtil这样一个类。通过这个类可以干什么呢?可以实现----数据库的连接!
没错,Connection接口的作用就是连接数据库-
与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
怎样才能得到这个连接呢?--想要建立这个连接,你需要注册一个驱动---嗯~就是这个代码 Class.forName("com.mysql.jdbc.Driver");
它是通过反射的机制来获得的,不了解反射?嗯~那你记住就完了 哈哈哈
connection = DriverManager.getConnection(url, user, password);这一句话的是用来获取连接的 ,这三个参数分别是 数据的地址,jdbc:mysql://IP地址:端口号/数据库的名称
嗯~然年再将一下如何通过jdbc向数据库写入数据
public int insertStuByStatement() {
String sql1 = "insert into stu(sname,sage) values('aaa',1)";
String sql2 = "insert into stu(sname,sage) values('bbb',1)";
String sql3 = "insert into stu(sname,sage) values('ccc',1)";
Connection connection = getConnection();// 获得数据库的连接
Statement stmt = null;
try {
stmt = (Statement) connection.createStatement();
connection.setAutoCommit(false);
stmt.addBatch(sql1);//批量添加sql语句
stmt.addBatch(sql2);//批量添加sql语句
stmt.addBatch(sql3);//批量添加sql语句
//一次性执行
stmt.executeBatch();
connection.commit();
System.out.println("批处理成功");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
} catch (Exception e2) {
}
}
return i;
}
这里使用的statement 来实现的,写出你要操作的 sql语句。(提一下,一般这些操作都是放在DBUtil类中的额 ,这个方法我也是放在DBUtil的)。
第二步:根据上面的定义的方法获取数据库。
下面就是获取一个Statement 对象,然后通过这个对象的stmt.executeBatch();就可以在数据库中执行刚才就的语句了,这样就做到了静态插入数据。
那动态插入数据是怎样的呢 ?-----那就是用到了另一个能够实现语句的对象PreparedStatement
直接上代码吧
public int insertStu(String sname,int sage){
String sql = "insert into stu(sname,sage) values(?,?)";
Connection connection = getConnection();//获得数据库的连接
PreparedStatement ps = null;
int i = 0;
try {
ps = (PreparedStatement) connection.prepareStatement(sql);
ps.setString(1, sname);
ps.setInt(2, sage);
i=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (ps!=null) {
ps.close();
}
} catch (Exception e2) {
}
}
return i;
}
定义的插入方法有了两个参数的数值
与statement的区别在哪呢?--一个是sql字符串语句的区别,多了“?”,作用是---看下面这两行代码
ps.setString(1, sname);
ps.setInt(2, sage);
ps.set****(a,b)有两个参数,sql语句中也有两个?,所以参数a,代表的是sql语句的第几个“?”,如果参数是1,则说明sql语句中第一个“?”的位置替换为参数b,
如果 同理如果参数是2,则说明sql语句中第一个“?”的位置替换为参数b.这样就做到了动态的插入数据,我们只要在调用插入方法的时候传入想要插入的数据就好了,不用每次都写新的sql语句。
对于 i=ps.executeUpdate();语句,它返回的这次你的数据库操作后有有几条数据有影响.这种方法对于插入,当然是i=1了 但是对于产出和修改的就不是一定了,删除修改我直接贴代码了就不再做讲解
//修改
public int updateStu(int sage,String sname){
String sql = "updae stu set sage = ? where sname = ?";
Connection connection = getConnection();
PreparedStatement ps =null;
int i = 0;
try {
ps = (PreparedStatement) connection.prepareStatement(sql);
ps.setInt(1, sage);
ps.setString(2, sname); i = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (ps!=null) {
ps.close();
}
} catch (Exception e2) { }
}
return i;
}
//删除
public int deleteStu(String sname,int sage) {
String sql = "delete from stu where sname=? and sage = ?";
Connection conn = getConnection();//获得数据库连接
PreparedStatement ps = null;
int i = 0;
try {
ps = (PreparedStatement) conn.prepareStatement(sql);
ps.setString(1, sname);
ps.setInt(2,sage ); i = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(ps != null)
ps.close();
}catch (Exception e) {
// TODO: handle exception
}
}
return i; }
数据库最重要的是什么---查询数据,相对于增删改--查可能稍微繁琐一点
代码如下:
/**
* 查询所有学生
* @return
*/
public ArrayList<Stu> queryStu(){
String sql = "select * from stu ";// select * 或的字段的顺序和数据库中的是一致
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<Stu> stus = new ArrayList<Stu>();//此集合用于存储每一个学生对象
try {
ps = (PreparedStatement) conn.prepareStatement(sql);
rs = ps.executeQuery();
//遍历rs
while(rs.next()) {//true表示有下一条数据
int id = rs.getInt("id");
String sname = rs.getString("sname");
int sage = rs.getInt("sage");
//创建stu对象
Stu stu = new Stu(id, sname, sage);
//收集对象
stus.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(rs != null)
rs.close();
if(ps != null)
ps.close();
}catch (Exception e) {
// TODO: handle exception
}
} return stus;
}
讲一下重点的地方 ResultSet rs = null; 这个对象存储的一个查询的结果集合。select * from stu这个返回的 应该是查询的学生表中每个学生的所有数据,
所以rs就可以储存这样的一个集合,然后通过遍历得到其中的数据,将数据赋值给一个学生对对象,将对象加入到集合中,就得到可表中所有的数据~
这次讲的主要是基础部分,等下次继续探讨JDBC联合其他的一些操作~
Class.forName("com.mysql.jdbc.Driver");
JDBC的连接mySql的基本知识的更多相关文章
- Ubuntu jsp平台使用JDBC来连接MySQL数据库
Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm ...
- jmeter中通过jdbc方式连接mysql数据库的配置参考
jmeter中通过jdbc方式连接mysql数据库的配置参考: Database URL=jdbc:mysql://ip:port/dbname?useUnicode=true&allowMu ...
- Spark JDBC方式连接MySQL数据库
Spark JDBC方式连接MySQL数据库 一.JDBC connection properties(属性名称和含义) 二.spark jdbc read MySQL 三.jdbc(url: Str ...
- Android Studio使用JDBC远程连接mysql的注意事项(附示例)
JDBC为java程序访问各种类型的关系型数据库提供了统一的接口,用户不必针对不同数据库写出不同的代码,但是使用JDBC必须得下载相应的驱动,比如我这里是要连接mysql,于是就到mysql官网去下载 ...
- JDBC Java 连接 MySQL 数据库
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 用于测试的 MySQL 数据库:game 查看数据库中的表 mysql ...
- jdbc 02: 连接mysql,并实现删除与更新
jdbc连接mysql,并实现删除与更新 package com.examples.jdbc.o2_删除与更新; import java.sql.*; //连接与插入 /* jdbc删除操作 */ p ...
- jdbc 01: 连接mysql,并实现数据插入
jdbc连接mysql,并实现数据插入 package com.examples.jdbc.o1_连接与插入; import java.sql.*; /* jdbc数据库连接六步 */ public ...
- JDBC中连接MySQL数据库
package qddx.JDBC; import java.sql.*; public class JDBC_Connection { static String driverName = &quo ...
- JAVA高级编程序——JDBC(连接mysql数据库)——(一)
java要想连接数据库,就要用JDBC(java database connection),用这个jar包 (mysql-connector-java-xxx-xx-bin.jar) sun公司为我们 ...
随机推荐
- n个点的基环树数量
某裴姓蒟蒻上午提了一个小问题(rt)..然后他升华了..升华之前感受到了神犇的力量... 方法一: g[n][k]表示n个点,k条边的无向图(不一定连通) f[n][k]表示表示n个点,k条边的无向连 ...
- count(1), count(*), count(col) 的区别
1.count(1)和count(*)都是统计表的总行数,两者执行结果相同.表没有主键或者唯一键索引时,两者都进行全表扫描:表上主键或者唯一键索引时,使用主键或者唯一键索引. 2.count(col) ...
- 从Flux到Redux详解单项数据流
从Flux到Redux是状态管理工具的演变过程,但两者还是有细微的区别的.但是最核心的都还是观察者模式的应用. 一.Flux 1. Flux的处理逻辑 通俗来讲,应用的状态被放到了store中,组件是 ...
- Oracle视图,索引,序列
什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...
- log(A^B) = BlogA
令 x = logA, y = logB, z=log(AB) .2x = A, 2y = B, 2z = AB, 则有 2z = AB = (2x)^(2y) = 2x(2^y) ,有z = x*2 ...
- 一般的linux系统默认安装的vim是精简版
一般的linux系统默认安装的vim是精简版(vim-tiny),所以不能配置语法检查等属性或获取在线帮助.需要安装vim-x:x.x.x,vim-common,vim-runtime. :synta ...
- xenserver 更新源
在xenserver上安装vnc软件时,报错 [root@cloud yum-3.4.3]# ./yummain.py install yumThere are no enabled repos.Ru ...
- 在sublime text3下,用快捷键把文件打开到浏览器中
使用背景 在编辑html或者js文件的时候,是否想在浏览器中预览一下, 你的步骤可能是这样的: 找到编辑文件的位置, 右键使用某一浏览器打开.如果是这样,你就out了, 因为在sublime中有更加简 ...
- linux下的tomcat开机自启动(亲测),更改静态ip
开机自启动Tomcat: 1.修改脚本文件rc.local:vim /etc/rc.d/rc.local 这个脚本是使用者自定的开机启动程序,可以在里面添加想在系统启动之后执行的脚本或者脚本执行命令 ...
- 零基础逆向工程29_Win32_03_ESP寻址_定位回调函数_子窗口_消息处理函数
1 Win32应用程序入口识别 思路:根据WinMain的四个参数,由调用顺序,知道最后压栈的是hInstance句柄(也就是WinMain函数的第一个参数,其值等于ImageBase),根据反汇编, ...