Going on
在前面两节实力浅学了Servlet和Jsp一波。然而这些东西离我们实际开发还有很远的距离(至少作业都完成不了=-=),所以想更进一步靠近实际开发的话,那就一定得对数据库的知识有一定程度的掌握和了解(这里暂时先来点简单的,毕竟数据库又是学科分支,分分钟搞大),我暂时对JAVA访问数据库的技术即JDBC进行学习和了解。
JDBC简介
商业应用的后台数据一般存放在数据库中,很明显,可以通过 Java 代码来访问数据库。
在 Java 技术系列中,访问数据库的技术叫做 JDBC(Java DateBase Connectivity),它提供了一系列的 API,让 Java 语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询。
JDBC编程接口
JDBC提供了两种编程接口:面向普通程序员用于数据库连接操作的的JDBC API,和面向JDBC驱动程序开发的JDBC Driver Interface.
JDBC API只关心java调用sql的抽象接口,而不考虑具体使用哪种方式实现,具体数据库调用靠JDBC驱动程序完成。
因此,我们普通程序员只要按照JDBC API撰写一次程序,然后搭建不同的JDBC驱动程序,便可以操作不同的数据库。
针对不同类型的数据库,JDBC 机制中提供了“驱动程序”的的概念。程序只需要使用数据库厂商提供的驱动程序,就可以连接数据库并进行操作。
JDBC 驱动器程序
JDBC驱动程序有两种主要的类型:
JDBC驱动:大多数数据库系统都实现的JDBC驱动程序,JSP可以用它直接访问数据库。
ODBC桥:有些数据库系统没有直接提供JDBC驱动,但是它们往往提供了ODBC驱动,ODBC即微软公司设计开发的windows系统开放数据库互联接口(Open Database Connectivity)。JSP可以通过SUN公司的JDBC-ODBC桥来实现对它们的访问。
JDBC API
JDBC API由用户调用,以实现基本的数据库操作。
其中包括四个类: java.sql.Connection:负责连接数据库
java.sql.Statement:负责执行数据库 SQL 语句
java.sql.ResultSet:负责存放查询结果
java.sql.DriverManager:负责装载驱动程序
而一般使用JDBC开发的流程如下
在了解JDBC之后我们继续按照惯例(以Myeclipse 2016 CI4为例):
在这里我们使用 IDE自带的 DerBy数据库=-=
先创建完Web Service Project 之后右键工程 打开properties(得手动添加 DerBy.jar 没这东西剩下的都是瞎扯)
这里我手贱加进去了,还有记得把derbyclient.jar添加到.classpath 当中
然后编辑Derby数据库的属性
搞定之后上代码(放入JSP):
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
<%
//全局变量,数据库名
String DBNAME = "MyEclipse Derby";
//连接端口
int NETWORKSERVER_PORT=1527;
//驱动类名
String DERBY_CLIENT_DRIVER = "org.apache.derby.jdbc.ClientDriver";
//以以上内容组装一个 Derby JDBC Driver URL
String DERBY_CLIENT_URL=
"jdbc:derby://localhost:" +
NETWORKSERVER_PORT +
"/" +
DBNAME +
";create=true";
Connection conn = null;
try{
//装载驱动程序
Class.forName(DERBY_CLIENT_DRIVER).newInstance();
//建立连接,三个参数:url,username,password
conn = DriverManager.getConnection(DERBY_CLIENT_URL,"xr", "111111");
//创建statement对象
Statement st = conn.createStatement();
//执行sql语句
//建一个名为USERINFO的表,使用execute方法
st.execute("create table USERINFO (USERID INT NOT NULL, USERNAME VARCHAR(10) NOT NULL)");
//增删改查表中的内容,用executeUpdate方法
st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (1, 'NOSTRING')");
st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (2, 'BECHAR')");
st.executeUpdate("insert into USERINFO(USERID, USERNAME) values (3, 'ALEXVIEW')");
//读取表的内容,用executeQuery方法
ResultSet rs = st.executeQuery("select * from USERINFO");
//循环输出内容
while(rs.next()){
int userID = rs.getInt(1);
String username = rs.getString(2);
out.println("-------------------<br>");
out.println("用户ID:"+ userID +"<br>");
out.println("用户用户名:"+ username +"<br>");
out.println("-------------------<br>");
}
}catch(SQLException e){
out.print(e.getErrorCode() + "<br>");
out.print(e.getCause() + "<br>");
out.print(e.getMessage() + "<br>");
if(conn != null )
conn.close();
}
%>
</body>
</html>
搞定=-= 这个底下过几日把MySql的版本试一下吧
待更新-————————2017.4.6