java高级特性流迭代器_JAVA 高级特性 JDBC

packagecom.project.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Scanner;importjava.sql.CallableStatement;public classJdbcDemo {private static final String url = "jdbc:mysql://localhost:3306/test";private static final String userName = "root";private static final String passWord = "";//初始化驱动,静态代码块

static{try{//加载驱动

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

}catch(ClassNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}public static voidmain(String[] args) {

JdbcDemo demo= newJdbcDemo();//创建一个 Connection 连接对象 通过一个连接对象操作数据库,一个连接多个操作

Connection con =JdbcDemo.getcon();//demo.updateprepareDemo(con);

demo.callableDemo(con);

demo.selectDemo(con);

JdbcDemo.closeDemo(con);

}//调用存储过程

public voidcallableDemo(Connection con){//准备SQL

String SQL ="{CALL test(?,?,?,?)}";//创建连接状态

try{

CallableStatement state=con.prepareCall(SQL);//设置参数

state.setString(1, "LIDAHU");

state.setInt(2, 23);

state.setString(3, "man");

state.registerOutParameter(4, java.sql.Types.INTEGER);//执行SQL

state.execute();//处理结果//获取参数

int result = state.getInt(4);if (result==1){

System.out.println("注册成功!");

}else{

System.out.println("注册失败!");

}

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}//利用预编译preparedstatement进行更新操作

public voidupdateprepareDemo(Connection con) {//准备SQL语句//String SQL1 = "INSERT INTO student(id,name,age,sex) VALUES(8,'YANGWU',18,'woman')";//String SQL2 = "DELETE FROM student WHERE id=1";//提交数据库的对象

PreparedStatement state = null;

Scanner sc= newScanner(System.in);

System.out.println("请输入修改的姓名 :");

String name=sc.nextLine();

System.out.println("请输入年龄 : ");int age =sc.nextInt();//关闭自动提交 , 事务不会实现数据持久化,即不会写入到数据库里面

try{

con.setAutoCommit(false);

}catch(SQLException e1) {//TODO Auto-generated catch block

e1.printStackTrace();

}

String SQL3= "UPDATE student SET name=? WHERE age=?";

System.out.println(SQL3);//获取状态

try{

state=con.prepareStatement(SQL3);//设置参数, SQL语句里面的 ? 按照顺序。

state.setString(1, name);

state.setInt(2,age);//executeUpdate 返回一个执行影响行数的int 提交SQL语句,执行SQL

int set =state.executeUpdate();//处理执行结果

if (set > 0) {//结束事务 , 数据上传到数据库, 实现持久化

con.commit();

System.out.println("执行成功: " + set + "行");

}else{//让其回滚。

con.rollback();

}

}catch(SQLException e) {

e.printStackTrace();

}finally{try{

state.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}//更新SQL 操作

@SuppressWarnings("unused")public voidupdateDemo(Connection con) {//准备SQL语句

String SQL1 = "INSERT INTO student(id,name,age,sex) VALUES(8,'YANGWU',18,'woman')";

String SQL2= "DELETE FROM student WHERE id=1";

String SQL3= "UPDATE student SET name='NIHAO' WHERE id = 1";//提交数据库的对象

Statement state = null;try{

state=con.createStatement();//executeUpdate 返回一个执行行数的int

int set =state.executeUpdate(SQL1);

System.out.println(set);if (set > 0) {

System.out.println("执行成功: " + set + "行");

}

}catch(SQLException e) {

e.printStackTrace();

}finally{try{

state.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}//获取连接对象

public staticConnection getcon(){

Connection con= null;try{//获取数据库连接

con =DriverManager.getConnection(url, userName, passWord);

}catch(Exception e) {//TODO: handle exception

}returncon;

}//查询方法

public voidselectDemo(Connection con) {//步骤://创建提交对象,,结果集对象

Statement state = null;

ResultSet set= null;//准备SQL语句

String sql = "select * from student";//执行SQL语句//创建提交数据库的连接

try{//连接对象 ,执行executeQuery查询命令,并保存到结果集set里面

state =con.createStatement();

set=state.executeQuery(sql);//处理结果集(对set 结果集进行遍历操作)//next(); 切换到下一条目标数据,如果存在下一条数据则返回true ,否则返回false

while(set.next()) {//每次循环操作一条结果

int id = set.getInt("id");

String name= set.getString("name");

String sex= set.getString("sex");int age = set.getInt("age");

System.out.println(id+ " " + name + " " + sex + " " + age+ ";");

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{

state.close();

set.close();

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}public static voidcloseDemo(Connection con) {//关闭数据库连接//处理异常

try{

con.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值