微信小程序+Servlet后台开发(二)
- Mysql
- Mysql简介和安装
- idea连接Mysql
- JDBC
- JDBC简介
- idea连接JDBC
- 导入jar包
- 数据库连接
- 类原型
- 数据库连接Demo
- 数据库操作
上一篇博文
已经实现了微信小程序和本地Servlet程序之间的通信,为了方便数据管理,需要将数据存至数据库。这里用到的主要工具就是JDBC,数据库选择使用MYSQL。与之前一样,环境为windows。
Mysql
Mysql简介和安装
Mysql的windows版安装就不再赘述了,要注意保存好安装时设置的用户名和密码,JDBC连接时需要用到。
idea连接Mysql
JDBC
JDBC简介
JDBC实际上是Java和数据库的中间层,它对Java提供了API接口,对数据库提供了驱动工具。通过JDBC可以很方便的驱动几乎各种类型的数据库。简单来说,JDBC可做三件事:与数据库建立连接,发送SQL语句并处理结果。
JDBC类库是Java平台的一部分,3.0主要分为两个包:java.sql和javax.sql。这两个包都包含在J2SE(Java桌面版)和J2EE(Java企业版)之中。但是由于Servlet服务只包含在J2EE中,因此下载Java和Interllij时要注意选择企业版。JDBC操作中常用嗯对类和接口可分为以下7种,分别是:
- 数据库建立连接
- 数据库传递SQL语句
- 检索和更新查询的记录集
- 建立数据源连接时以DataSource接口代替DriverManager
- 连接池
- 分布式事务处理
- 行记录集
前三种已经可以满足基本的需求了,下面分点记录一下。
idea连接JDBC
首先在Mysql官网下载Mysql connector for Java(Connector/J),网址连接是https://dev.mysql.com/downloads/connector/j/。选择操作系统为平台无关性
下载.zip
版本即可,方便idea建立连接。
导入jar包
下载后解压可以得到JDBC connector的jar包,在idea内部通过Project Structure导入即可。
选择Modules
项卡,点击右面的加号,根据相应的路径导入jar
包。导入完后注意要勾选驱动文件,否则工程将不会应用。
注意还要将jar复制一份放进tomcat的lib目录下,否则tomcat会找不到jar包而报java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
错误。
数据库连接
类原型
由于有了JDBC的大量底层高质量代码的帮助,原本让开发人员头疼的数据库连接,变成了一件非常容易的事情。连接各种数据库都可以用以下两步完成:
- 加载注册驱动程序
- 取得对数据库的连接
以上两步用Java代码表示就是:
//加载注册驱动程序
Class.forName( "yourdriver" );
//取得对数据库的连接
connection = DriverManager.getConnection( URL );
该语句加载驱动程序,并创建该类的一个实例。此时要连接一个特定的数据库,必须创建一个Connection
类的实例,并使用URL语法连接数据库。URL语法可能因为数据库类型的不同由很大的变化。例如下面的形式:
jdbc: subprotocol: subname
第一组字符表示连接协议,并且始终是JDBC。还可能有一个子协议,例如ODBC。它规定了一类数据库的连通性机制。并且开发者要连接其他机器上的数据库服务器,可能也要指定该机器和一个子目录,例如:
jdbc:bark//doggie/elliott
最后,可能要指定用户名和口令,作为连接字符串的一部分,例如:
jdbc:bark//doggie/elliot;UID=GoodDog;PWD=woof
这样就可以得到某种数据库的连接,有了这个连接,就有了操作数据库的源头,这样就可以在此基础上,通过Statement、PreparedStatement、ResultSet等对象,完成SQL语句的传递、查询和修改记录等操作。
下面着重记录一下Mysql的JDBC URL语法。
标准语法:
<protocol(主要通讯协议)>:<subprotocol(次要通讯协议,即驱动程序名称)>:<data source identifier(数据源)>
Mysql的JDBC URL格式:
jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][¶m2=value2]….
示例:
jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password
常见参数:
参数 | 含义 |
user | 用户名 |
password | 密码 |
autoReconnect | 联机失败,是否重新联机(true/false) |
maxReconnect | 尝试重新联机次数 |
initialTimeout | 尝试重新联机间隔 |
maxRows | 传回最大行数 |
useUnicode | 是否使用Unicode字体编码(true/false) |
characterEncoding | 何种编码(GB2312/UTF-8/…) |
relaxAutocommit | 是否自动提交(true/false) |
capitalizeTypeNames | 数据定义的名称以大写表示 |
数据库连接Demo
接下来看一段Demo,该Demo连接本地的数据库,并返回成功信息。
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/yourarchive?user=yourusername&password=yourpswd";
try {
Class.forName(driver);
Connection connection = DriverManager.getConnection( url );
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
如果运行程序后没有报错,就说明idea与MySQL已经连接成功了。
数据库操作
上面我们已经通过JDBC获得了数据库的连接,而拥有数据库连接,就获得了操作数据库的权限。例如如下Demo:
//获得连接
Connection con = DriverManager.getConnection("url");
//获得Statement
Statement stmt = con.createStatement();
//执行SQL语句获得结果集
ResultSet rs = stmt.executeQuery("xxxx");
遍历结果集,得到数据
while(rs.next()){
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
以上就是JDBC操纵数据库的基本流程,也是JDBC首要解决的问题,它代表性地展示了如何在Java程序中获取相关数据库的信息,并保存到程序的变量中,其基本过程如下所示:
产生
回收
产生
回收
Connection
Statement
ResultSet
数据库的操作也就是不同的sql命令即可。