JDBC 连接MySQL基础的增删改

JDBC 连接MySQL基础的正删改标签(空格分隔): JDBCday01 数据库的连接what-JDBCJDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。why-JDBC同时,将Java语言和JDBC结合起来使程序员不必为不同的平台...
摘要由CSDN通过智能技术生成

JDBC 连接MySQL基础的正删改

标签(空格分隔): JDBCday01 数据库的连接


what-JDBC

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

why-JDBC

同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

how -JDBC

  • 加载驱动
	Class.forName("com.mysql.jdbc.Driver")
	注冊驱动有三种方式:
  1.      Class.forName(“com.mysql.jdbc.Driver”);
           推荐这样的方式,不会对详细的驱动类产生依赖
  2. DriverManager.registerDriver(com.mysql.jdbc.Driver);
           会对详细的驱动类产生依赖
  3. System.setProperty(“jdbc.drivers”, “driver1:driver2”);
           尽管不会对详细的驱动类产生依赖;但注冊不太方便。所以非常少使用
  • 建立连接
	String url="jdbc:mysql://localhost:3306/ishopn?characterEncoding=utf8";   
	//指定地址和数据库默认字符集 否则或出现乱码
	String user="root";//账号
	String password="1234";//密码
	DriverManager.getConnection(url, user, password);
  • 创建运行SQL的语句(Statement)
	Statement state = conn.createStatement();
  • 运行语句
	//增删改操作 当是0时没有执行操作 返回受影响的行数
	int result = state.executeUpdate(SQL);
	//查询操作 返回查询的返回集合
	ResultSet rs = state.executeQuery(SQL);
  • 处理运行结果(ResultSet)
	rs.next())
	rs.getInt(1);//下标从零开始
  • 释放资源
	//关闭资源
	conn.close()
	

代码汇总

Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/ishopn?characterEncoding=utf8";   //url jdbc有自己的写法  jdbc:oracl
String user="root";
String password="1234";
conn = DriverManager.getConnection(url, user, password);

防止注入攻击

String sql = "select * from `customer` where cu_id='"+ "' or 1=1 #"+" and cu_phone=123";

用上面的方法能够免密登入用Statement接受的话
所以sql提供了PreparedStatement 来阻止注入攻击

PreparedStatement ps = conn.prepareStatement(String  sql);
String Query_sql = "select * from `customer` where cu_id=? and cu_phone=?";
String cu_id = "2a4e0cdd-380e-41bf-960f-f2f6d0a6ccae";
String cu_phone = "9999";
//防止注入攻击
PreparedStatement ps = conn.prepareStatement(Query_sql);

ps.setString(1, cu_id);
ps.setString(2, cu_phone);

ResultSet rs2 = ps.executeQuery();

setString的参数是?的顺序从1开始


PreparedStatement更新操作示例、

String Update_sql = "update customer set cu_phone=? where cu_id=? and cu_phone=?";
String cu_id = "2a4e0cdd-380e-41bf-960f-f2f6d0a6ccae";
String old_cu_phone = "7777";
String new_cu_phone = "9999";
//放置注入攻击
PreparedStatement ps = conn.prepareStatement(Update_sql);

ps.setString(1, new_cu_phone);
ps.setString(2, cu_id);
ps.setString(3, old_cu_phone);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过 JDBC 连接 MySQL 数据库,并实现增删查操作。以下是一个简单的示例代码: ```java import java.sql.*; public class JdbcExample { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test"; static final String USER = "root"; static final String PASS = "password"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 注册 JDBC 驱动器 Class.forName(JDBC_DRIVER); // 打开连接 System.out.println("连接数据库..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); // 执行查询 System.out.println("创建查询..."); stmt = conn.createStatement(); String sql = "SELECT id, name, age FROM student"; ResultSet rs = stmt.executeQuery(sql); // 处理结果集 while (rs.next()) { // 获取数据 int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); // 显示数据 System.out.print("ID: " + id); System.out.print(", Name: " + name); System.out.println(", Age: " + age); } // 关闭连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { // 处理 JDBC 错误 se.printStackTrace(); } catch (Exception e) { // 处理 Class.forName 错误 e.printStackTrace(); } finally { // 关闭资源 try { if (stmt != null) { stmt.close(); } } catch (SQLException se) { } try { if (conn != null) { conn.close(); } } catch (SQLException se) { se.printStackTrace(); } } } } ``` 上述代码实现了查询操作,如果要实现增删操作可以使用 PreparedStatement 来执行 SQL 语句。例如,插入数据的示例代码如下: ```java // 创建 PreparedStatement 对象 String sql = "INSERT INTO student (name, age) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setString(1, "Tom"); pstmt.setInt(2, 20); // 执行更新 int rows = pstmt.executeUpdate(); // 关闭资源 pstmt.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值