mysql了解jdbc_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 intinsertStuByStatement() {
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) {
}
}returni;
}
这里使用的statement 来实现的,写出你要操作的 sql语句。(提一下,一般这些操作都是放在DBUtil类中的额 ,这个方法我也是放在DBUtil的)。
第二步:根据上面的定义的方法获取数据库。
下面就是获取一个Statement 对象,然后通过这个对象的stmt.executeBatch();就可以在数据库中执行刚才就的语句了,这样就做到了静态插入数据。
那动态插入数据是怎样的呢 ?-----那就是用到了另一个能够实现语句的对象PreparedStatement
直接上代码吧
public int insertStu(String sname,intsage){
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) {
}
}returni;
}
定义的插入方法有了两个参数的数值
与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(intsage,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) {
}
}returni;
}//删除
public int deleteStu(String sname,intsage) {
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
}
}returni;
}
数据库最重要的是什么---查询数据,相对于增删改--查可能稍微繁琐一点
代码如下:
/*** 查询所有学生
*@return
*/
public ArrayListqueryStu(){
String sql= "select * from stu ";//select * 或的字段的顺序和数据库中的是一致
Connection conn =getConnection();
PreparedStatement ps= null;
ResultSet rs= null;
ArrayList stus = new ArrayList();//此集合用于存储每一个学生对象
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 = newStu(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
}
}returnstus;
}
讲一下重点的地方 ResultSet rs=null; 这个对象存储的一个查询的结果集合。select * from stu这个返回的 应该是查询的学生表中每个学生的所有数据,
所以rs就可以储存这样的一个集合,然后通过遍历得到其中的数据,将数据赋值给一个学生对对象,将对象加入到集合中,就得到可表中所有的数据~
这次讲的主要是基础部分,等下次继续探讨JDBC联合其他的一些操作~
Class.forName("com.mysql.jdbc.Driver");
mysql了解jdbc_JDBC的连接mySql的基本知识相关推荐
- php设置mysql查询编码,php连接mysql时怎么设置编码方式
php连接mysql时怎么设置编码方式 php连接mysql数据库时,也就是在mysql_connect()语句之后添加"mysql_query("set names utf8&q ...
- php连接mysql乱码原因_PHP连接MYSQL出现乱码的原因与解决办法
PHP连接mysql出现乱码的原因与解决方法 解决MySql数据库乱码的一个首要前提是保证 数据库+数据表+前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf ...
- 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)
本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...
- macOS安装MySQL,使用Navicat连接MySQL数据库/2022
macOS安装MySQL,使用Navicat连接MySQL数据库/2022 intel chip 下载安装文件 进入官网 MySQL :: MySQL Downloads 选择页尾MySQL Comm ...
- 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(一、编译连接前准备)
一.说明 电脑系统:win10 qt版本:5.13.2和5.14.1(测试均成功) mysql版本:MySQL-5.5 本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动 ...
- .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...
- java linux mysql数据库_Linux Java连接MySQL数据库
Linux(Ubuntu平台)Java通过JDBC连接MySQL数据库,与Windows平台类似,步骤如下: 解压 jdbc: tar -zxvf mysql-connector-java-5.1.1 ...
- php获取mysql数据菜鸟_PHP 连接 MySQL | 菜鸟教程
PHP 连接 MySQL PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved) PDO (PHP Dat ...
- hibernate mysql 设置时区_Hibernate连接MYSQL失败提示时区错误该怎么解决?
平台: WIN10 X64 专业版. IDEA 2016.1.1. MYSQL 5.7.12 hibernate 4.2.2 具体问题: 用hibernate连接MYSQL数据库的时候提示 ERROR ...
最新文章
- 如何给机房的服务器安装系统,云机房服务器系统安装
- hdu3177 贪心
- java程序错误类型及异常处理
- 给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
- Angular16 Angular整合zTree、异步加载节点数据
- mes建设指南_给予和接受建设性批评的设计师指南
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
- MySql学习之varchar类型
- 获取指定远程网页内容
- 用友nc6.5详细安装过程
- 游戏美术专业人士如何评价Share Creators智能数字资产管理系统
- Bootstrap5 文字排版讲解
- JAVA中的各种引用
- python“反反爬虫”
- Android Shortcuts使用详解
- 实践讲解Spring配置中心config(图+文,本地文件方式)
- 仙剑奇侠传4狐仙打法
- java是几位的unicode,下列说法错误的是()。A.Java的字符类型采用的是Unicode编码,每个Unicode码占16位比特B.Java的各种...
- DR-TM NET射线图像增强网络
- NFC相关的各种标准