我对数据库的理解
我对数据库的理解
刘军
我对java操作数据库的一些愚见:
回忆我们直接使用数据库的时候!(这里以Oracle为例)。
第一步:在本地(我的电脑)上的某一个位置找到plsql图标。
第二步:打开,出现一个窗口,要求输入username、password、database。
第三步:验证输入,如果输入正确,那么oracle就可以让你操作数据。
第四步:选择(打开)控制台。
第五步:输入sql语句。
第六步:执行sql语句。
第七步:得到执行结果。
第八步:关闭数据库。
在java中,我们需要去操作数据库,那么怎么样才能操作到数据库?
第1步:得到驱动:我们应该去打开数据库,但是这里当然不是通过一个电脑上的某一个图标来操作了。因为这是在java中操
作。那么,就应该需要一个驱动来执行。驱动我们可以这样来理解:例如:现在电脑上有一个DVD的视频,你想要观看
它,但是它不能自动播放,因为它没有这个功能,所以我们就给它找一个播放器(视频播放驱动程序)来打开这个
DVD。数据库驱动程序是各个数据库厂商提供的,应该从网站download一个,比如:
classes12.jar。这里以MyEclipse为例,首先:在你的工程下面建立一个目录文件“lib”,然后将
classes12.jar拷贝到这个目录文件当中,然后在工程名(demo)上右键-->Properties-->Java Build Path-->
Libraries-->Add JARS-->demo-->lib-->classes12.jar-->ok。现在工程下面多了一个Referenced Libraries下
面多了一个文件就是classes12.jar。表示驱动添加成功。
下面就可以加载驱动程序了:
Class.forName("oracle.jdbc.driver.OracleDriver");
oracle.jdbc.driver.OracleDriver这实际就是一个classes12.jar当中的class文件,oracle.jdbc.driver是包名,OracleDriver是类名,这么长怎么记
啊?在MyEclipse当中,你可以Class.forName();先这样写好,然后在括号里面输入oracle.,然后Alt + /,选择jdbc.driver,然后.找到OracleDriver。最
后两边加上引号即可。
第2步:连接:在上一步,我们好比是使用了一个驱动打开了一个登陆Oracle的窗口,那么现在就要求输入username、
password、database。Oracle在何处呢?如果是本地的,那么就是192.168.1.11 很多时候写127.0.0.1不能通过。
String url = "jdbc:oracle:thin:@192.168.1.11:1521:liujunOracle";
String user = "scott";
String password = "liujun";
Connection conn = DriverManager.getConnection(url, user, password);
说明:本地Oracle名字为liujunOracle,我使用scott登陆,密码为liujun。 1521 为本机上Oracle使用的端口号。jdbc:oracle:thin:@这个就是Oracle的
固定写法了。
第3步:验证输入:如果输入正确,那么oracle就可以让你操作数据。
第4步:得到一个控制台:登陆数据库,我们的目的当然是要操作数据了,如果使用plsql直接登陆,那么我们会选择一个控制
台,然后在控制台上为所欲为。
PreparedStatement ps = null;
第5步:在控制台上输入语句:
conn.prepareStatement("select * from dept where deptno=?");
conn.prepareStatement("增删改语句");
第6步:执行语句:
查询: ps.executeQuery();
增删改:ps.executeUpdate();
第7步:得到执行结果:
a、当执行查询语句:那么ps.executeQuery()的返回类型是ResultSet。那么我们此处就应该用ResultSet来接收。
ResultSet rs = ps.executeQuery();
然后对这个结果集rs进行判断:
while(rs.next()) {
int deptid = rs.getInt("deptno");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
System.out.println("DEPTNO|DNAME|LOC");
System.out.println(deptid+"|"+dname+"|"+loc);
}
b、当执行增删改操作:那么ps.executeUpdate()的返回类型int,即:影响了多少行。
int num = ps.executeUpdate();
然后对num进行判断:
第8步:关闭数据库:先打开的资源,后关闭。
/** 关闭资源*/
public void closeResource() {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (ps != null) {
try {
ps.close();
ps = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}