今天听从老师的建议,在CSDN上写博客,以后就放弃了新浪博客,有兴趣的可以看看我之前写的新浪博客文章。(http://blog.sina.com.cn/u/5818596139),写的也不咋地。好嘞,那我们今天开始java-jdbc。
JDBC是什么那?JAVA DatatBase Connectivity。就是java数据库连接,它主要的作用就是用java语句使用JDBC来操作数据库(各种数据库);
JAVA中可以对数据库进行数据持久化的有如下的几个类:
JDBC直接访问数据库
JDO技术
第三方的O/R工具,Hibernate ,mybatis等(O/R映射层是持久层的一个特例,它的数据模型是对象模型(Object),存储模型是关系模型(Relational),cmp和Hibernate是对象模型到关系模型之间转换的两种不同实现。百度的解释o/r)
那么什么是数据持久化呐?(persistence):把数据保存到可掉电式存储设备中以供之后使用,大多数情况下,特别是企业级应用,持久化的实现过程大多通过各种关系数据库来完成。
JDBC是java访问数据库的基石,JDO,Hibernate等只是更好的封装了JDBC。
JDBC严格来说就是一种规范,JAVA语言用来访问各种关系型数据库的规范。有关jdbc的还有两个词,JSR和JCP,其中的jsr是java specification requests的缩写,意思是java规范提案,java标准提案(JSR 221)。jcp是java community process是java的一个网站,一个组织,你前端不是也有w3c。
使用JDBC的好处:
他是访问各种数据的一组通用的接口。现在最高版本的jdbc是4.2
JDBC常用的一组接口(类):
①Driver(接口):数据库驱动接口,通常有各个厂商来实现,封装了对各种具体数据操作的代码。
②DriverManager(类):驱动管理器,用来管理已加载的驱动。
③connectio(接口):代表与数据库之间的一个链接。
④statement(接口):声明,它的作用是向数据库发送sql语句
⑤ReuseSet(接口):代表查询的结果;
现在我们知道jdbc中常用的接口或者是类,我们来一起看看怎么操作他们,了解之后再来看看他们的详细说明吧。来来来第一个JDBC栗子:
开发步骤:加载驱动,获得链接(connection),通过连接来创建statement,关闭资源。
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//这句话中主要是用来加载驱动的,括号里面的内容是在jar包中找到的,如果括号中的东西写错了将出现classNotFoundException,如果没饮用进来jar包,则会用其自带的教案jar包即可能会报有NO suitable driver found for jdbc的错误字样。
//获得链接
String url="jdbc:mysql://localhost:3306/web1613";
String name="root";
String pwd="";
Connection conn=DriverManager.getConnection(url,name,pwd);
//创建statement,并执行sql语句。
//url:连接字符串,格式是协议,子协议,子名称。
DriverManager是一个驱动程序管理器,根据我们加载的驱动获得链接
Statement st=conn.createStatement();
st.execute("insert into sc values (1402001,1,98)");
//关闭连接;
st.close();
conn.close();
//关闭的时候注意顺序
System.out.println("连接成功");
(上述的过程中你可必须开启数据库啊,有阿帕奇的启动它,没有的要确定数据库已经连接上了,不是光用你的navicat打开就完事了,连接连接!)
现在来一起了解一哈上面的那几个接口吧!导包的时候注意了,别整错了
1.java.sql中的connection(接口):
与特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果,connection对象的数据库可提供描述其表所支持的sql语法,默认情况下,connection对象处于自动提交模式下,这意味着他在执行每个语句后都会自动的提交更改,如果禁用了自动提交模式,那么要提交更改就必须显示的调用commit方法。否则无法保存数据库更改。
connection方法:
close();commit();getTranssctionIsolation();isclosed();prepareStatement();rollback();setAutoCommit();
2.Statement(接口):
其中有两个子接口preparedStatement,callableStatement
statement是用来执行静态sql语句并返回他所生成的结果的对象,默认的情况下,同一时间每个statement对象只可打开一个ResultSet对象。因此,如果读取一个ResultSet对象与读取两一个交叉,则这两个对象必须是由不同的statement对象生成的,如果存在某个语句的打开方法都会隐式的关闭它。
statement代表一个声明,使用其可以表向数据库发送sql语句,
主要提供了三个方法用于执行特定的sql:
Boolean execute(sql);//第一个结果是ResultSet对象即返回true,如果是更新计数或者不存在任何的结果即false,DDL,DML都可以执行。
Boolean b=st.execute("create table tb_m(mid int primary key name varchar(20))");
system.out.println(b);//false
int executeUpdate(sql);//主要用来执行可更新的DML语句(update,delete,insert)返回受影响的记录的条数
int b=st.executeUpdate("delete from book where name="scw"");
system.out.println(b);返回数量;
unknown column ‘name’ in where clause就是拼写有错误了;
ResultSet executeQuery();//记录集(存储记录的集合)比较常用的方法,就是next(),记录集的游标,
while(rs.next()){
system.out.println(rs.getString(2));
}
还有getXXX();要么写列号,要么写列名。
例如说是:
ResultSet rs=st.executeQuery("select ------");
while(rs.next()){
int isbn=rs.getInt();
String name=rs.getString("bookname");
String price=rs.getString("price");
}
rs.close();
statement方法:
close();execute();executeBatch();execteQuery();executeUpdate();getConnection();isclosed();
3.ResultSet(接口):
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成,
ResultSet对象具有指向其当前数据行的光标,最初,光标的位置设置与第一行之前,用next方法来移动光标到下一行,因为该方法在ResultSet对象没有下一行时返回false,即可在while循环中使用它来表示迭代结果集。默认的resultset对象不可更新,仅有一个向前移动的光标,,因此只可以迭代它一次,并且只可按照从第一行到最后一行的顺序进行,下面来个api中的例子,告诉你怎么生成可滚动的不受其他的更新影响的可更新结果集:
Statement sta=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs=sta.executeQuery("select a,b from table2");
//rs 将会滚动,将不会展现这个改变给其他的地方,和将会更新。
ResultSet 接口提供用于从当前行获得列值的方法,可以使用列的索引编号或者列名来获取值,一般情况下使用列索引较为高效,列从1开始.
PS:DriverManager类:驱动程序管理器,用来管理驱动并创建连接。
getConnection(url,username,password);connection接口:代表数据库的连接,注意区别Collection接口,connection是连接,Collection是集合。
本站博客用于日常总结笔记,方便携带查找。可能有不足之处,请读者见谅