使用纯 Java 数据库驱动程序连接数据库 jdbc,并查询数据表 goods 中的数据
一、前言
在JSP 页面中访同数据库,首先要与数据库建立连接,通过连接向数据库发送指令获得返回的结果。JDBC 连接数据库有两种营用方式: 建立DBC-ODBC 桥接器和加载纯Java驱动程序。
JDBC_(Java DataBase Connectivity)是Java 平台核心类库的一部分,它由一组标准接口与类组成。经常使用JDBC 完成三件事:
1.与指定的数据库建立连接;
2.向己连接的数据库发送 SQL 命令:
3 处理SQL命令返回的结果。
ODBC(Open DataBase Connectivity)是由Microsof 主导的数据库连接标准,提供了通用的数据库访问平台。但是,(使用 ODBC 连接数据库的应用程序移植性较差,因为应用程序所在的计算机必须提供 ODBC)所以,本章仅介绍了使用纯 Java 动程序连接数据库使用纯Java 数据库驱动程序连接数据库需要两不步:注册纯Java 数据库驱动程序:2和指定的数据库建立连接。
二、MySQL创建一个表
这段代码在软件的新建查询中使用有错误,所以我选择手动的创建一个表。
DROP TABLE IF EXISTS 'goods';
CREATE TABLE 'goods'(
'id' int(11) NOT NULL AUTO_INCREMENT,
'gname' varchar(50) CHARACTER SET utf8 COLLATE utf8_nuicode_ci DEFAULT NULL,
-- 最大长度为 50,字符集为 utf8,校对规则为 utf8_nuicode_ci,默认值为 NULL
-- 数据库的校对规则(Collation)是一组定义如何比较和排序字符的规则。在数据库中,校对规则非常重要,因为它们决定了字符串的比较行为,包括大小写敏感性、特殊字符的处理、以及排序顺序等。校对规则通常与字符集(Character Set)一起使用,用于确保文本数据的正确存储、比较和检索。
-- 校对规则的主要作用包括:
-- 字符比较:确定如何在查询和排序操作中比较字符串。不同的校对规则可能对大小写敏感或不敏感。
-- 排序顺序:定义字符串在结果集中的排序方式,例如,按照字母顺序或数字顺序。
-- 文本搜索:影响文本搜索操作的结果,如 LIKE 或 REGEXP 查询。
-- 国际化支持:不同的校对规则可以支持不同的语言和地区设置,有助于处理多语言环境。
-- 文本处理:在进行文本处理时,如大小写转换、截断、填充等,校对规则会起到关键作用。
-- 常见的校对规则示例:
-- utf8_general_ci:基于 UTF-8 字符集,不区分大小写的比较。
-- utf8_bin:基于 UTF-8 字符集,进行二进制比较,区分大小写。
-- latin1_swedish_ci:适用于拉丁字符集,瑞典语环境,不区分大小写。
'gprice' double DEFAULT NULL,
-- DEFAULT NULL默认值为null
PRIMARY HEY('id')
) ENGINT=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=latinl;
-- 用于定义表的属性和列的默认设置。具体来说:
-- ENGINE=InnoDB:这指定了表使用的存储引擎是 InnoDB。InnoDB 是 MySQL 默认的存储引擎,它支持事务处理、外键约束、行级锁定和崩溃恢复等功能。
--
-- AUTO_INCREMENT=1:这指定了表中某个列(通常是主键)的自增属性从 1 开始。每当向表中插入新行时,如果该列没有指定值,它将自动递增。这通常用于生成唯一的记录标识符。
--
-- DEFAULT CHARSET=latin1:这指定了表的默认字符集是 latin1。latin1 字符集是 ISO 8859-1 的同义词,它支持西欧语言,包括英语、德语、法语等。然而,latin1 字符集并不支持多语言字符,如中文、日文等
三、代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!-- <%@ page %> 是一个非常重要的指令,用于定义JSP页面的配置和属性。
位于JSP页面的顶部,用来指定页面相关的指令和属性 ,如导入包、设置页面编码、定义会话管理等。 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用纯java驱动程序连接MySQL,并访问数据</title>
</head>
<body>
<%
Connection con = null;
Statement st = null;
ResultSet rs=null;
//加载驱动
//使用Class类(java.lang 包)中的方法 forNameO
//来加载该驱动程序的类定义com.mysqljdbc.Driver,
//从而创建了该驱动程序的一个实例
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("加载驱动成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("加载驱动失败!");
}
try{
//建立连接
///创建 Connection 的一个实例,并使用DriverManager 的方法getConnection0米尝试连接指定的数据库
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf-8&useSSL=false","root","root");
System.out.println("连接数据库成功!");
//首先用Connection的createStatement0方法从指定的数据库连接得到一个Statement实例,
//然后该Statement实例调用executeQuery0方法来执行一条SQL 语句
st = con.createStatement();
rs=st.executeQuery("select * from goods");
//ResultSet 对象是JDBC 中比较重要的一个对象,几乎所有的查询操作都将数据作为ResultSet 对象返回
while(rs.next()){
out.print ("<table border=\"1\">");
out.print("<tr>");
out.print ("<td>" + rs.getString ("id") + "</td>");
out.print ("<td>" + rs.getString ("gname") + "</td>");
out.print ("<td>" + rs.getString ("gprice") + "</td>");
out.print("</tr>");
out.print ("</table>");
}
}catch(SQLException e){
e.printStackTrace();
System.out.print("SQL Server连接失败!");
}finally{
try{
if(rs!= null){
//对数据库的操作完成之后,要及时关团 ResultSet 对象、Statement 对象和 Connection对象,从而释放占用的资源
rs.close();
st.close();
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
%>
</body>
</html>
原文地址:https://blog.csdn.net/2301_76876837/article/details/139030899
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!