logo头像

一路过来,不过游牧自己。。

JDBC初学笔记(三)


下面主要学习一下Stetement语句!

1.Statement

Ststement:Statement语句是SQL语句的描述,使用它就可以操作各种各样的SQL语句,包括DDL,DML和DCL等!

那如何去创建这种语句呢,下面步骤看仔细了:

  1. 创建:

    1
    2
    3
    4
    5
    6
    //创建语句:
    Connection con=DBUtils.open();
    String str="create table UserTbl(id int primary key auto_increasement)";
    Statement stmt=con.createStatement();
    stmt.execute(str);
    DBUtils.close(con);

2.更新:这里要注意 的就是不管是Update和delete,insert都是用的executeUpdate

1
2
3
4
Connection con=DBUtils.open();
String str="insert into UserTbl(name) values(Tom) ";
Statement stmt=con.createStatement();
stmt.executeUpdate(str);

3查询:

1
2
3
4
5
6
7
8
9
10
11
12
Connection con=DBUtils.open();
String sql="select * from userinfo;";
Statement stmt= con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
//遍历结果集
while(rs.next()){
int id=rs.getInt(1);
String name=rs.getString(2);
}
while(con!=null){
DBUtils.close(con);
}

2.Result结果集

这个东西又是用来干什么的呢?所谓的结果集,其必然是一个结果,功能就是用来获得一个查询结果集,所以他是针对Query的,其实在这个方法里主要是和next()来一起用,一般会用getXXX的方式来获得所要了解的资料,查询方法见上面代码,不再赘述!

3.PreparedStatement语句

这个主要是预定义语句,是一种静态操作语句,其用法主要如下:

其实我们要弄清楚他这个区别与原来的更改,这个区别就是他的参数是不确定的,用占位符?来表示值,这样对于我们来说,只要是用SetXXX就可以为表内元素赋值,这是一种非常灵活的方式!

1
2
3
4
5
6
7
Connection con=DBUtils.open();
String str="insert into CustomerTbl(name,email) values(?,?) ";
PreparedStatement psmt=con.prepareStatement(str);
psmt.setString(1, "Amy");
psmt.setString(2, "10086@qq.com");
psmt.executeUpdate();
DBUtils.close(con);

再来一个关于查询的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Connection con=DBUtils.open();
String str="select id,name,email from CustomeTbl where id=?";
PreparedStatement psmt=con.prepareStatement(str);
psmt.setInt(1, 4);
ResultSet rSet=psmt.executeQuery();
while(rSet.next()){
String name=rSet.getNString(2);
String email=rSet.getString(3);
//将数据存入一个对象
Customer c=new Customer() ;
c.setId(4);
c.setName(name);
c.setEmail(email);
}

4.CallableStatement语句

CallableStatement 主要继承自PreparedStatement,调用了存储过程的能力,其用法主要是:

  • 调用简单的存储过程

  • 调用有参数的存储过程

  • 调用的输入,输出过程的存储过程

    可理解为执行一个运算之后返回一个结果,即定义了一系列过程,然后将这个操作过程进行了封装,然后调用就行。

    例如:

    1
    2
    3
    //在命令行输入
    Create procedure all_customer() select * from CustomerTbl;
    call all_customer();
1
2
Connection con=DBUtils.open();
CallableStatement cstmt=con.prepareCall("call all_customers()");

下面的语句就和其他的没啥区别了!

还是再举一个栗子吧,下面看看例二:

1
2
//在命令行输入
Create Procedure insert_customer(in myname varchar(20);in mymail vachar(20)) insert into CustomerTbl(name,email) value (myname,myemmail);
1
2
3
4
5
6
7
//执行
Connection con=DBUtils.open();
CallableStatement cstmt=con.prepareCall("call insert_customer(?,?)");
cstmt.setString(1, "tom");
cstmt.setString(2, "10086@qq.com");
int r=cstmt.executeUpdate();
System.out.println(r);

好啦,就到这吧,这只是一些基础的操作,JAVA中还有很多精彩的内容等待我们去探索和发现,与君同进步!

微信打赏

赞赏是不耍流氓的鼓励