JDBC连接MySql
来源:互联网 发布:如何更改mysql的密码 编辑:程序博客网 时间:2024/06/07 10:27
JDBC连接MySql,数据操作:
加载Mysql数据驱动(非必须步骤) Class.forName(“com.mysql.jdbc.Driver”);
创建数据库连接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull",
"数据库用户名", "数据库密码");写sql语句:String sq = “”;
创建执行sql的Statemen对象: Statement st = conn.createStatement();
执行sql:st.execute***(sql);
查询ResultSet rs = st.executeQuery(sql); while(rs.next()){}
更新,删除,插入: int count = st.executeUpdate(sql);返回值是表示数据库操作成功的条数
- 数据库关闭:conn.close();
static Statement st; public static void main(String[] args) { //先要获取连接,即连接到数据库 Connection conn = getConnection(); //insert(conn);//插入数据 query(conn);//查询数据 //update(conn);//更新数据 //delete(conn);//删除数据 } //查询 private static void query(Connection conn) { Statement st; try { String sql = "select * from t_user"; // 查询数据的sql语句 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 ResultSet rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集 System.out.println("最后的查询结果为:"); while (rs.next()) { // 判断是否还有下一个数据 // 根据字段名获取相应的值 int id = rs.getInt("id"); int age = rs.getInt("age"); String name = rs.getString("name"); String password = rs.getString("password"); String sex = rs.getString("sex"); //输出查到的记录的各个字段的值 System.out.println(id + " " + age + " " + name + " " + password + " " + sex); } conn.close(); //关闭数据库连接 } catch (Exception e) { System.out.println("查询数据失败"); } } //插入 private static void insert(Connection conn){ try { String sql = "insert into t_user(id,age,name,password,sex) values(1,10,'zhhangsan','111111','man')"; st = conn.createStatement();//创建用于执行sql语句的Statement对象 int count = st.executeUpdate(sql);//执行sql语句,返回的是更新数据的条数 System.out.println("往数据库中插入了 " + count + "条数据"); }catch (Exception e){ System.out.println(e.getMessage()); } } //删除 private static void delete(Connection conn){ try { //sql语句 String sql = "delete from t_user where id = 1"; //生成执行sql的Statement对象 st = conn.createStatement(); //执行sql语句 int count = st.executeUpdate(sql); System.out.println("删除了 " + count + " 条数据"); }catch (Exception e){ System.out.println(e.getMessage()); } } //修改 private static void update(Connection conn){ try { //写sql String sql = "update t_user set password='222222' where id=1"; //生成Statement对象 st = conn.createStatement(); //执行sql int count = st.executeUpdate(sql); System.out.println("更新了 " + count + " 条数据"); }catch (Exception e){ System.out.println(e.getMessage()); } } //数据库连接 private static Connection getConnection() { Connection conn = null; //创建用于连接数据库的Connection对象 try { Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动,非必须 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/erp", "root", "root");// 创建数据连接 } catch (Exception e) { System.out.println("数据库连接失败" + e.getMessage()); } return conn; }
解释
1、为什么说Class.forName是非必须的
在java中只有类被使用的时候才会被加载(加载:读取字节码,执行static块)
而Class.forName的作用·呢就是加载对应名称的类
所以,在这里Class.forName这里是是保证了在执行DriverManager.getConnection时,对应的com.mysql.jdbc.Driver已经在JVM中了
在JDBC4.0之后,DriverManager会自动去读取jdbc.Driver中的信息,同时getConnection会自动调用server provider(服务器供应商)去获取信息
即,说明了只要你的JDBC包含了驱动信息,是可以不用Class.forName这个方法
那么在什么情况会需要这个呢?
a、jdk1.6以下的版本
b、JDBC4.0以下的版本
PS:在研究使用idea+mave工具,顺便带上依赖包的:
- JDBC连接MySQL数据库
- JDBC连接MySQL数据库
- JDBC连接MYSQL
- JDBC连接MySQL
- 使用JDBC连接MySql
- JDBC连接mysql代码
- JDBC连接MySQL
- JDBC连接MySQL
- JDBC连接MySQL
- JDBC连接MYSQL数据库
- JDBC连接mysql数据库
- JDBC连接MySQL【摘编】
- jdbc连接Mysql数据库
- JDBC连接MySQL
- jdbc 连接mysql数据库
- jdbc连接mysql
- mysql jdbc 连接
- JDBC连接MYSQL
- PAT 1009 乙等 (说反话)c++
- Gradle for Android
- PHP Laravel (Homestead)开发环境搭建
- opendir打开后显示的不全
- ES性能调优
- JDBC连接MySql
- 逆向工程核心原理学习笔记(二十二):栈帧9:调用printf()函数
- Coprime Sequence
- c++实现冒泡排序和快速排序
- MEASURING COMPUTER PERFORMANCE
- 领域模型(概念模型) 、逻辑模型、物理模型、贫血模型、充血模型概念总结【待读与标记】
- linux shell 字符串操作(长度,查找,替换)详解
- 百度实习生面试题-按行读取文件
- 记一次 php nginx 502 504 大坑