JAVA EE 学习笔记[V3 JDBC连接数据库]
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