标签:系列 String rs stm 数据库 基础 MySql conn
1、数据库划分
数据库一般分为两种:关系型数据库和非关系型数据库。
关系型数据库:将复杂的数据规定成一系列二维表的形式,对关系型数据库的操作一般是对一个或多个有关联的表进行数据项的存储查询。
Mysql、Oracle就是常见的关系型数据库。
非关系型数据库:以键值对、文档、搜索引擎的形式存储数据,事特定结构存储的数据集合。
Redis是典型的键值对形式、MongDB是文档形式、ES是搜索引擎形式的非关系型数据库。
2、MySql架构
MySql的层次结构大体可以分成四个层次:
(图片来源于网络)
连接层:负责客户端的连接,授权认证、安全处理、连接池等在这一层做相应处理。
服务层:处理sql语句的解析与优化,及缓存和内置函数处理。
存储引擎层:负责MySql数据的存储和提取,连通文件系统为服务层提供数据的存取服务。
文件系统:MySql数据真正存放的地方,MySql数据文件存储在同级data目录下。
3、Java连接MySql
原理是加载java的MySql驱动与数据库建立连接,一般步骤就是:连接数据库 -> 执行查询 -> 返回结果。
代码示例
\\简单java连接mysql例子:
public class MySqlDemo {
private static final String USER = "root";
private static final String PASSWORD = "root";
private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
public static void main(String[] args) {
Connection conn = null;
Statement stm = null;
try{
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL,USER,PASSWORD);
// 执行查询
System.out.println(" 实例化Statement对象...");
stm = conn.createStatement();
String sql;
sql = "SELECT id, name, age FROM user";
ResultSet rs = stm.executeQuery(sql);
while(rs.next()){
// 通过字段检索
int id = rs.getInt("id");
String name = rs.getString("name");
String age = rs.getString("age");
System.out.println(String.format("id=%s,name=%s,age=%s",id,name,age));
}
// 完成后关闭
rs.close();
stm.close();
conn.close();
}catch(SQLException se){
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e){
// 处理 Class.forName 错误
e.printStackTrace();
}finally{
// 关闭资源
try{
if(stm!=null){
stm.close();
}
}catch(SQLException se2){
}// 什么都不做
try{
if(conn!=null){
conn.close();
}
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("end!");
}
}
4、项目中使用MySql
Mysql在java项目的使用,一般都是将连接属性写在配置文件,同时配合一个持久层的框架MyBatis、Spring Data等对数据库的连接和操作语句进行管理。
标签:系列,String,rs,stm,数据库,基础,MySql,conn 来源: https://www.cnblogs.com/Zxq-zn/p/15203953.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。