java没错navicat没运行结果_萌新问个问题,为啥这个代码运行的写不进去navicat哭了...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package com.venilry.test;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

/*

* statement,存在SQL注入危险

*/

/*

* 【Statement接口】

* 用于执行静态SQL语句并返回它所生成结果的对象。

* 【三种Statement类】

* 1、Statement:由createStatement创建,用于发送简单的SQL语句。(不带参数的)

* 2、PreparedStatement(预编译):继承自Statement接口,由prepareStatement创建,

* 用于发送含有一个或多个输入参数的Sql语句。PreparedStatement对象比Statement

* 对象的效率更高,并且可以防止SQL注入。我们一般都用PreparedStatement。

* 3、CallableStatement:继承自PreparedStatement。由方法prePareCall创建,用于调用存储过程。

* 【常用的Statement方法】

* 1、execute():运行语句,返回是否有结果集。

* 2、executeQuery():运行select语句,返回ResultSet结果集。

* 3、executeUpdate():运行insert/update/delete操作,返回更新的行数。

* 【JDBC详细操作】

* 1、灵活指定SQL语句中的变量

* PreparedStatement

* 2、对存储过程进行调用

* CallableStatement

* 3、运用事务处理

* Transaction

* 4、批处理

* Batch:对于大量的批处理,建议使用Statement,因为PreparedStatement的预编译空

* 间有限,当数据量特别大时,会发生异常。

*/

/*

【事务】

一个connection对应一个事务,一个connection可以有多个statement,一个statement对一个sql的一次execute对应一个结果集resultset,如果继续用该statement对另一个sql进行execute则会自动对上一个resultset进行close。

所以如果想同时获得每个不同sql的结果集,要使用多个statement对象。

JDBC的connection的事务是默认自动开启的,可以手动开启,届时需要通过connection的commit来手动提交事务。

----------------------------------

java的事务控制是基于mysql的事务控制的。

当mysql开启事务时:

当sql语句都顺利执行时,手动提交会使得事务执行,手动回滚会使得事务不执行。

当有sql语句执行出错时,是否需要手动回滚呢?手动提交的结果是会顺利执行还是失败呢?

答:当执行到有问题的sql语句时,会自动抛出错误,最终该事务手动提交的结果是正确的语句仍然正确执行,错误的语句不会执行。而手动回滚则全都不执行。

*/

public class Test010 {

public static void main(String[] args) throws Exception {

// 加载数据库驱动类

Class.forName("com.mysql.cj.jdbc.Driver");

// 获得Connection对象

// 建立连接(连接对象内部包含了Socket对象,是一个远程的连接。比较耗时,这是Connection对象管理的一个要点

// 真正开发中,为了提高效率,都会使用连接池来管理连接对象。

Connection connection = DriverManager

.getConnection("jdbc:mysql://localhost:3306/db01?serverTimezone=Asia/Shanghai", "root", "root");

// sql语句

String sql = "select * from user where id=1";

// 获得statement

Statement statement = connection.createStatement();

// Statement.execute()

boolean execute = statement.execute(sql);

System.out.println(execute);

// Statement.executeQuery()

ResultSet resultSet = statement.executeQuery(sql);

// 操作结果集:getXxx()方法的参数可以是String对象,即表中字段名,或者int类型,即表中字段顺序

while (resultSet.next()) {

Object name = resultSet.getObject("name");

System.out.println(name.toString());

}

// 关闭资源(遵循从resultset→statement→connection这样的关闭顺序,一定要将三个try-catch分开写)

resultSet.close();

statement.close();

connection.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值