头歌——Java高级特性 - JDBC(上)

第1关:JDBC连接数据库

package jdbc;

import java.sql.*;

public class jdbcConn {
	public static void getConn() {
		try {
			// 1.注册驱动
			Class.forName("com.mysql.jdbc.Driver");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		/********** End **********/

		/********** Begin **********/
		Connection conn = null;
		Statement statement = null;
		try {
			// 2.建立连接并创建数据库和表

			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "123123");

			String sql1 = "drop database if exists mysql_db;";
			String sql2 = "create database mysql_db;";
			statement = conn.createStatement();
			statement.execute(sql1);
			statement.execute(sql2);

			statement.execute("use mysql_db");

			String sql3 = "create table student(id int not null,name varchar(20),sex varchar(4),age int)";

			statement.execute(sql3);
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} finally {
			try {
				if (statement != null)
					statement.close();
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}
}

第2关:JDBC对表中数据的操作 

package jdbc;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class jdbcInsert {
	public static void insert() {
		/********** Begin **********/
		try {
			// 加载驱动
			Class.forName("com.mysql.jdbc.Driver");

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		/********** End **********/

		Connection conn = null;
		PreparedStatement statement = null;
		/********** Begin **********/
		// 连接并插入数据
		try {
			String url = "jdbc:mysql://localhost:3306/mysql_db?useUnicode=true&characterEncoding=utf8";
			String user = "root";
			String password = "123123";
			conn = DriverManager.getConnection(url, user, password);

			String sql1 = "insert into student(id,name,sex,age) values (1,'张三','男',19),(2,'李四','女',18),(3,'王五','男',20)";

			statement = conn.prepareStatement(sql1);
			statement.executeUpdate();
			String sql2 = "select * from student";
			ResultSet rs = statement.executeQuery(sql2);

			Student student = null;
			while (rs.next()) {
				int id = rs.getInt(1);
				String name = rs.getString(2);
				String sex = rs.getString(3);
				int age = rs.getInt(4);
				student = new Student(id, name, sex, age);
				System.out.println(
						student.getId() + " " + student.getName() + " " + student.getSex() + " " + student.getAge());
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		/********** End **********/
		finally {
			try {
				if (statement != null)
					statement.close();
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

第3关:JDBC事务

package jdbc;

import java.sql.*;

public class jdbcTransaction {

    public static void transaction(){
        try {
            Class.forName("com.mysql.jdbc.Driver" );
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        Connection conn = null;
        PreparedStatement ps = null;
        /**********  Begin   **********/
        //连接数据库并开启事务
        try {
           String url="jdbc:mysql://localhost:3306/mysql_db?useUnicode=true&characterEncoding=utf8";
           conn =DriverManager.getConnection(url,"root","123123");
           conn.setAutoCommit(false);

           String sql1="insert into student(id,name,sex,age) values(4,'赵六','女',21)";
           ps=conn.prepareStatement(sql1);
           ps.executeUpdate();
           conn.commit();

           String sql2="daj;ljd";
           ps=conn.prepareStatement(sql2);
           ps.executeUpdate();
           conn.commit();

           String sql3="select * from student";
           ResultSet rs=ps.executeQuery(sql3);

           Student student = null;
           while(rs.next())
           {
               int id=rs.getInt(1);
               String name=rs.getString(2);
               String sex =rs.getString(3);
               int age=rs.getInt(4);

               student =new Student(id,name,sex,age);
               System.out.println(student.getId() + " " + student.getName() + " " + student.getSex() + " " + student.getAge());
           }









        } catch (SQLException e) {
            try {
                //事务回滚
                conn.rollback();


            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        /**********  End   **********/
        finally {
            try {
                if(ps!=null)
                    ps.close();
                if (conn != null)
                    conn.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
    }
}

在MyBatis中,最初接触博客系统可能会涉及到数据库操作,比如插入用户数据。传统的JDBCJava Database Connectivity)方式需要手动编写SQL语句和处理连接、事务等细节。以下是使用JDBC插入用户数据的基本步骤: 1. **连接数据库**: 首先,你需要通过`DriverManager.getConnection()`或第三方库(如Spring JDBC)获取到数据库连接。 ```java Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myblog", "username", "password"); ``` 2. **创建Statement或PreparedStatement**: `Statement`用于简单的SQL执行,而`PreparedStatement`可以防止SQL注入攻击,因为它会预编译SQL。 ```java String sql = "INSERT INTO users (username, password) VALUES (?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "user1"); pstmt.setString(2, hashPassword("user1")); // 对密码做哈希处理 ``` 3. **设置参数并执行**: 设置SQL语句中的占位符值,并调用`executeUpdate()`方法执行插入操作。 ```java int rowsInserted = pstmt.executeUpdate(); if (rowsInserted > 0) { System.out.println("User inserted successfully."); } else { System.err.println("Insert failed with status: " + rowsInserted); } ``` 4. **关闭资源**: 使用完数据库连接后,记得关闭`Connection`, `Statement`, 和`PreparedStatement`以释放系统资源。 ```java pstmt.close(); conn.close(); ``` 在MyBatis中,这个过程会被封装在映射文件(XML或注解形式)中,使得代码更简洁,降低了直接写SQL的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值