JDBC初步
博客专区 > pmos 的博客 > 博客详情
JDBC初步
pmos 发表于1年前
JDBC初步
  • 发表于 1年前
  • 阅读 38
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: JDBC初步,PreparedStatement

JDBC初步

1、下载MySQL的Connector

将Connector中的jar包加入到classpath中

2、创建Connection

			/*
			 * 1、创建Connection(注意是java.sql包中的Connection)
			 * 创建这个Connection需要指定相应的连接字符串和用户名和密码
			 * 注意:如果不加?useSSL=false或者?useSSL=true会有警告
			 */
			String url = "jdbc:mysql://localhost:3306/pm_test?useSSL=true";
			String user = "root";
			String password = "123456";
			con = DriverManager.getConnection(url, user, password);

3、编写SQL和执行SQL的Statement

			/*
			 * 2、创建SQL
			 * 执行SQL语句需要使用Statement
			 */
			String sql = "select * from t_dep";
			stat = con.createStatement();
			/*
			 * 在获取了stat之后,如果执行的是更新,直接使用stat.executeUpdate(sql)完成更新
			 * 如果执行的是查询,需要通过executeQuery(sql)完成,返回值是一个ResultSet的记录集
			 */

4、执行SQL,如果是查询就操作ResultSet

			//执行查询的情况
			rs = stat.executeQuery(sql);
			/*
			 * 遍历记录集的统一方式
			 */
			while(rs.next()) {
				System.out.println(rs.getInt("id")+","+rs.getString("name"));
				//也可以使用数据库查询出来的投影顺序访问,但是不建议使用该方式,因为投影顺序可能会在将来改变
				//所以一般都用投影的名称访问
//				System.out.println(rs.getInt(1)+","+rs.getString(2));
			}



			//执行更细的情况
//			String sql = "insert into t_dep (name) value ('教育系')";
			String sql = "update t_dep set name='政史系' where id=5";
			stat = con.createStatement();
			//通过stat完成更新
			stat.executeUpdate(sql);

5、释放资源

			/*
			 * 操作完成之后需要释放连接,先释放rs接着释放stat最后释放con
			 */
			try {
				if(rs!=null) rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(stat!=null) stat.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con!=null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		

PreparedStatement

如果直接使用Statement来执行SQL有可能会存在SQL注入的攻击,所以一般会使用PreparedStatement来替代Statement。

		Connection con = null;
		PreparedStatement ps = null;
		try {
			String url = "jdbc:mysql://localhost:3306/pm_test?useSSL=true";
			String user = "root";
			String password = "123456";
			con = DriverManager.getConnection(url, user, password);
			//使用PreparedStatement一般都是使用?来替代SQL中的变量
			String sql = "insert into t_spe (name,type,dep_id) value (?,?,?)";
			ps = con.prepareStatement(sql);
			//1表示设置第一个?的值
			ps.setString(1, "初等教育");
			ps.setString(2, "师范类");
			ps.setInt(3, 5);
			ps.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if(ps!=null) ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if(con!=null) con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

 

共有 人打赏支持
粉丝 13
博文 109
码字总数 194289
×
pmos
有收获吗?给我打赏吧,三块五块不嫌多,三百五百不嫌少... ...
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: