JSP访问数据库

首先我们先来了解一下什么是JDBC:在Java技术中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库的数据进行添加.删除.修改.和查询。

JDBC中以下类或接口
  java.sql.Connection:负责连接数据库 
 java.sql.Statement:负责执行数据库 SQL 语句
 java.sql.ResultSet:负责存放查询结果

针对不同类型的数据库,JDBC 机制中提供了"驱动程序"的的概念。对于不同的数据库,程序只需要使用不同的驱动

JDBC 简介:

安装数据库厂商驱动,需要去各自的数据库厂商网站下载驱动包,用户也许觉得很麻烦。
此时,微软公司提供了一个解决的方案。在微软公司的  Windows  中,预先设计了一个ODBC(Open Database Connectivity,开放数据库互连)功能
由于 ODBC 是微软公司的产品,因此它几乎可以连接到所有在 Windows 平台下运行的数据库,由它连接到特定的数据库,不需要具体的驱动。
而 JDBC 就只需要连接到 ODBC 就可以了 

Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现

下面我们具体讲一下JDBC访问MYSQL

 1 通过 JDBC 连接到 ODBC,并获取连接对象
Class.forName("com.mysql.jdbc.Driver"); 
String url="jdbc:mysql://localhost:3306/student?
useUnicode=true&characterEncoding=utf8";
Connection conn = DriverManager.getConnection(url,"root","root" ");

  2 使用 Statement 接口运行 SQL 语句
Statement stat = conn.createStatement(); 
stat.executeQuery(SQL 语句);//查询
或者 
stat.executeUpdate(SQL 语句);//添加、删除或修改 
 3 处理 SQL 语句运行结果,这和具体的操作有关
 4 关闭数据库连接:
stat.close(); 
conn.close(); 

添加数据:
String sql="insert into 表名(列名1,列名2…) values('列值1','列值2'...)";
删除数据:
String sql="delete from 表名 where 列名i='列值i'";
更新数据:
String sql="update 表名 set 列名i='列值i' where 列名j='列值j'";
最后执行 int i = stat.executeUpdate(sql); i是sql 语句执行受影响的行数

查询语句:
String sql="select 列名i,列名j from 表名 where 列名i='列值i'";
查询语句执行:
ResultSet rs = stat.executeQuery(sql); 
查询到的结果放入 ResultSet 中,实际上是一个小表格

游标是在 ResultSet 中一个可以移动的指针,它指向一行数据
初始时指向第一行的前一行,实际上不指向任何数据
rs.next()可以将游标移到下一行,它的返回值是一个布尔类型,即如果下一行有数据则返回为 true,否则为 flase
很明显,可以使用 rs.next()配上 while 循环来对结果进行遍历

当游标指向某一行,可以通过 ResultSet 的 getXXX(“列名”)方法得到这一行的某个数据, XXX 是该列的数据类型,可以是 String,也可以是 int 等
但是所有类型的数据都可以用 getString()方法获得
除了通过列名获得数据外,还可以通过列的编号来获得

关于游标的注意
  游标的初始值并不是指向第 1 行数据,而是指向第 1 行的前面那条数据。所以必须要运行一次 next()函数之后,才能从开始取数据,如果强行取则会找不到该列而报错 
从某一行中通过  getXXX()方法取数据每一列只能取一次,超过一次,程序将会报错,如果需要重复使用某列数据,可以先定义一个变量,将取出的数据赋予它,再重复使用


使用 PreparedStatement

在很多情况下,需要由客户输入各变量值,这时SQL语句的写法就比较麻烦,而且容易出错
PreparedStatement 解决了这个问题,它是Statement 的子接口,功能与 Statement 类似
 它在 sql 语句中使用了?代替了需要插入的参数
  用 PreperedStatement 的 setString(n,参数)方法可以将第 n 个?用传进的参数代替。这样做增加了程序的可维护性,也增加了程序的安全性

如下:

Statement stat=conn.createStatement();
String sql="insert into stuScore(num,name,score) values('005','张三','82')";
int i=stat.executeUpdate(sql);


当使用 PreparedStatement就可以很好的避免麻烦与出错:

String sql="insert into stuScore(num,name,score) values(?,?,?)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1,"005");
ps.setString(2,"张三");
ps.setString(3,"82");
int i=ps.executeUpdate();





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我并不是一个可以接收并处理实验报告的程序。但是,我可以为您提供一些关于 JSP 访问数据库的基本知识和指导。 首先,JSP(Java Server Pages)是一种用于创建动态Web页面的Java技术。它允许在页面中嵌入Java代码,以及使用标签库和表达式语言来简化页面开发。 要在JSP访问数据库,您需要使用JDBC(Java Database Connectivity)API。这个API提供了一组Java类和接口,用于连接和操作各种类型的数据库。 下面是一个简单的JSP页面,演示如何使用JDBC API连接到MySQL数据库,并查询其中的数据: ``` <%@ page language="java" %> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <title>JSP Database Example</title> </head> <body> <% // Connect to the database Connection conn = null; Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/mydatabase"; String username = "root"; String password = "password"; conn = DriverManager.getConnection(url, username, password); // Query the database Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM mytable"); // Display the results while (rs.next()) { out.println(rs.getString("name") + " " + rs.getInt("age")); } // Close the database connection rs.close(); stmt.close(); conn.close(); %> </body> </html> ``` 在这个例子中,我们首先使用Class.forName方法加载MySQL驱动程序,然后使用DriverManager.getConnection方法连接到MySQL数据库。接下来,我们使用Statement.executeQuery方法查询数据库,并使用ResultSet.next方法依次遍历查询结果。最后,我们关闭了ResultSet、Statement和Connection对象,以释放资源。 当然,上面的例子只是一个简单的示例,实际情况可能更加复杂。如果您想了解更多关于JSP访问数据库的知识,请参考相关的教程和文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值