JDBC实验报告详细
实验九:JDBC编程
实验九JDBC编程一、实验目的1)掌握JDBC的概念与使用场景2)掌握JDBC的工作原理3)掌握使用JDBC操作数据库的基本步骤4)掌握JDBC中几个常用接口和类5)掌握带数据库操作的应用程序开发步骤二、实验环境JDK1.6+Eclpise3.2三、实验准备1)复习课件中理论知识2)练习课堂所讲的例子四、实验内容1)安装MySQL数据库2)在MySQL中创建数据库webdb,并创建表news3)实现对news表的增删改查五、实验过程及结果插入数据调试如图:查询数据调试如图:删除数据调试如图:修改数据调试如图:六、实验感想本次实验,我了解了JDBC的概念与使用场景,理解了JDBC的工作原理,掌握了使用JDBC操作数据库的基本步骤,掌握了JDBC中几个常用接口和类,了解了带数据库操作的应用程序开发步骤等。
七、附录插入数据代码:package zsl;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class InsertNews {public static void main(String[] args)throwsClassNotFoundException,SQLException {Class.forName("com.mysql.jdbc.Driver");Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/webdb?user=root&password=1");Statement stmt=cn.createStatement();int flag=stmt.executeUpdate("insert into news(title,author,hit)values('我院荣获全国独立学院','管理员','888')");if (flag>0){System.out.println("添加成功");}else{System.out.println("添加失败");}stmt.close();cn.close();}}查询数据代码:package zsl;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class SelectNews {public static void main(String[] args)throwsClassNotFoundException,SQLException {Class.forName("com.mysql.jdbc.Driver");Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/webdb?user=root&password=1");Statement stmt=cn.createStatement();ResultSet rs=stmt.executeQuery("select*from news");while (rs.next()){System.out.println("newsid-->+rs.getInt(1)");System.out.println("title-->+rs.getInt(2)");System.out.println("author-->+rs.getInt(3)");System.out.println("hit-->+rs.getInt(4)");}rs.close();stmt.close();cn.close();}}删除数据代码:package zsl;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class DeletNews {public static void main(String[] args)throws SQLException, ClassNotFoundException{Class.forName("com.mysql.jdbc.Driver");Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/webdb?user=root&password=1");Statement stmt=cn.createStatement();int flag=stmt.executeUpdate(" delete from news where author='管理员'");if (flag>0){System.out.println("删除成功");}else{System.out.println("删除失败");}stmt.close();cn.close();}}修改数据代码:package zsl;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class UpdateNews {public static void main(String[] args)throwsClassNotFoundException,SQLException {Class.forName("com.mysql.jdbc.Driver");Connection cn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/webdb?user=root&password=1");Statement stmt=cn.createStatement();int flag=stmt.executeUpdate("update news set title='我院荣获河南发展最快独立学院',hit=666 where author='管理员'");if (flag>0){System.out.println("修改成功");}else{System.out.println("修改失败");}stmt.close();cn.close();}}。
网络工程网络编程实验报告5-JDBC连接
《网络编程》实验报告实验序号:05 实验项目名称:JDBC连接学号姓名专业、班20网络工程实验地点指导教师实验时间2022一、实验目的及要求1、利用JDBC实现对Acess数据库文件的操作2、利用JDBC实现对MySQL数据库文件的操作二、实验设备(环境)及要求一台Windows XP、JDK1.6、MyEclipse 8.5三、实验内容与步骤1、建立ODBC数据源:建立T_STUDENT表;2、添加数据、删除数据:PreparedStatement,CallableStatement四、实验结果与数据处理Access数据库使用连接池访问数据库1.添加数据:结果:2.删除数据:结果:MySQL数据库1、添加数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "INSERT INTO T_STUDENT(STUNO,STUNAME,STUSEX)VALUES('0032','fengjiang','man')";int i = stat.executeUpdate(sql);out.println("成功添加" + i + "行");stat.close();conn.close();%></body></html>2、删除数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "DELETE FROM T_STUDENT WHERE STUNO='0032'";int i = stat.executeUpdate(sql);out.println("成功删除" + i + "行");stat.close();conn.close();%></body></html>结果:3、修改数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "UPDATE T_STUDENT SET STUSEX='女' WHERE STUNO='0007'";int i = stat.executeUpdate(sql);out.println("成功修改" + i + "行");stat.close();conn.close();%></body></html>结果:4、查询数据:<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn = DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "SELECT STUNO,STUNAME FROM T_STUDENT WHERE STUSEX='女'";ResultSet rs = stat.executeQuery(sql);while(rs.next()){String stuno = rs.getString("STUNO");String stuname = rs.getString("STUNAME");out.println(stuno + " " + stuname + "<BR>");}stat.close();conn.close();%></body></html>结果:附源程序清单:添加数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "INSERT INTO T_STUDENT(STUNO,STUNAME,STUSEX) VALUES('0032','fengjiang','man')";int i = stat.executeUpdate(sql);out.println("成功添加" + i + "行");stat.close();conn.close();%></body></html>删除数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "DELETE FROM T_STUDENT WHERE STUNO='0032'";int i = stat.executeUpdate(sql);out.println("成功删除" + i + "行");conn.close();%></body></html>修改数据:<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "UPDATE T_STUDENT SET STUSEX='女' WHERE STUNO='0007'";int i = stat.executeUpdate(sql);out.println("成功修改" + i + "行");stat.close();conn.close();%></body></html>查询数据<%@ page language="java"import="java.sql.*"pageEncoding="utf-8"%> <html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn =DriverManager.getConnection("jdbc:odbc:DSSchool");Statement stat = conn.createStatement();String sql = "SELECT STUNO,STUNAME FROM T_STUDENT WHERE STUSEX='女'";ResultSet rs = stat.executeQuery(sql);while(rs.next()){String stuno = rs.getString("STUNO");String stuname = rs.getString("STUNAME");out.println(stuno + " " + stuname + "<BR>");}conn.close(); %></body></html>。
实验七 JDBC技术
实验七JDBC技术
【实验目的】
1.理解JDBC思想与体系结构;
2.掌握使用JDBC访问数据库的步骤;
3.掌握JDBCAPI的使用;
4.掌握访问不同数据库所需的相应驱动程序和使用的连接字符串;
5.掌握在Java应用程序中对数据库进行查询操作和更新操作;
6.掌握PreparedStatement与预处理操作。
【实验内容】
(一)建立ODBC数据源
1.建立一个名为student的Access数据库,在其中建立一个名为chengjibiao的数据表,该
表的结构如下(该表不设置主键),并向数据表中添加以下记录:
2.针对上述数据表,建立数据源,名为cheng。
具体步骤请参考第十三章课件。
(二)访问数据源,验证程序。
1.验证例子Example13_1.java,该程序用于查询数据库中chengjibiao里的全部记录,并输
出每条记录的所有字段。
2.验证例子Example13_4.java,该程序用于实现按英语成绩排序查询。
3.验证例子Example13_5.java,该程序用于实现随机查询,随机从结果集中取出4条记录,
并计算记录的书序成绩的平均值。
4.验证例子Example13_6.java,该程序演示对数据库的更新、添加和删除记录的操作。
5.验证例子Example13_8.java,该程序演示使用PreparedStatement对象,实现预处理操作。
(三)编写程序。
1.建立数据库,并建立图书信息表,保存图书编号、书名、作者、价格等信息,编写JDBC 程序实现对图书信息的检索和更新操作。
JDBC实验报告
实验报告
学院计算机学院班级学号姓名
课程名称Java程序设计实验日期
实验名称数据库应用开发成绩
实验目的:深入理解JDBC数据库驱动程序的概念,掌握JDBC提供的访问数据库相关接口和类的应用,掌握使用JDBC的Java数据库应用程序开发的基本步骤和方法。
实验条件:使用JDK和Eclipse
实验目的
本实验要求学生使用JDBC提供的接口和类编写一个Java应用程序,实现对学生数据信息的查询、删除、插入、更新等操作。
学生数据库(student)在MySQL数据库服务器中创建。
1. 在MySQL中创建学生数据库student,其中一个学生信息表stuinfo结构如下:
图1 stuinfo表结构
2. 设计一个Java程序,界面如图2所示,实现以下功能:
(1)点击“全部检索”按钮,检索stuinfo表的所有记录,显示在上面的JTable组件中;
(2)输入查询学号,点击“查询”按钮,查询该学生信息显示在左边面板中,查询不到时弹出信息提示。
(3)左边面板中输入学生信息,点击“添加”按钮,将此学生信息插入stuinfo表中,弹出插入是否成功的提示框。
(4)点击“删除”按钮,依据上边学号值删除该学生记录,弹出删除是否成功的提示框。
(5)点击“更新”按钮,依据上边学号值更新该学生的其它信息,弹出更新是否成功的提示框。
实验结果
实验总结
每次对学生进行增删改查后,表要实时变化。
我在界面的代码中写了一个refresh函数,每当有有数据变化,它都会将当前表所在的JScrollPane移除,之后TableModel再从数据库中读取数据,重新建立一个表格,再将其添加到新建的JScrollPane中,放到界面中去。
jdbc实训报告总结
jdbc实训报告总结实训报告:JDBC(Java Database Connectivity)一、实训目标本次JDBC实训的目标是掌握Java语言如何通过JDBC API与关系型数据库进行交互,包括数据库的连接、查询、更新和断开连接等操作。
二、实训内容1. 了解JDBC的基本概念和用途。
2. 掌握JDBC驱动的安装与配置。
3. 掌握使用JDBC API进行数据库连接、查询、更新和断开连接的步骤。
4. 了解事务处理和批处理的概念及实现方法。
5. 掌握使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
6. 了解JDBC的异常处理机制。
7. 掌握使用连接池管理数据库连接。
三、实训过程1. 在实验环境中安装和配置JDBC驱动。
2. 编写Java程序,实现数据库的连接、查询、更新和断开连接等操作。
3. 编写Java程序,实现事务处理和批处理。
4. 编写Java程序,使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
5. 编写Java程序,实现异常处理。
6. 编写Java程序,使用连接池管理数据库连接。
四、实训总结通过本次实训,我深入了解了JDBC API的使用方法,掌握了Java语言与关系型数据库的交互方式。
在实训过程中,我学会了如何安装和配置JDBC驱动,如何使用JDBC API进行数据库连接、查询、更新和断开连接等操作,以及如何使用PreparedStatement和CallableStatement执行参数化查询和存储过程。
此外,我还了解了事务处理和批处理的概念及实现方法,以及JDBC的异常处理机制和连接池的使用方法。
这些知识和技能将对我今后的学习和工作产生积极的影响。
实验五JDBC编程
实验五JDBC编程一、实验目的掌握JDBC的常用方法,能够通过JDBC存储、查询、更改MS SQL、Server 2000或MySql数据库二、实验内容参考附录和网络课程中的JDBC实例程序,选择数据库新建一个表,新建Web程序可以访问、插入、更新这个表三、实验源码login.jsp<html><head><meta http-equiv="Content-Type" content="text/html; charset= UTF-8"><title>欢迎登录</title></head><body>请输入用户名和密码:<!-- 登录表单,该表单提交到一个Servlet --><form id="login" method="post" action="serlvet/LoginServlet">用户名:<input type="text" name="username" width="50" /><br><br>密   码:<input type="password" name="pass" width="50" /><br><br><input type="submit" value="登录" /><br></form></body></html>连接数据库并处理请求参数的Servlet:LoginServlet.javapackage servlet;import java.io.IOException;import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;public LoginServlet() {// TODO Auto-generated constructor stub}protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubdoPost(request, response);}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stubServletConfig config = this.getServletConfig();request.setCharacterEncoding("utf-8"); // 处理中文输入乱码String username = request.getParameter("username");String password = request.getParameter("pass");response.setContentType("text/html;charset=utf-8"); // 处理中文输出乱码// String encoding=config.getInitParameter("encoding");// response.setContentType("text/html;charSet="+encoding);boolean isLogin = false;isLogin = checkAuthority(username, password);if (isLogin) {PrintWriter out = response.getWriter();out.println("<html><head><title>登录结果</title></head>");out.println("<body>您输入的用户名是:" + username + "<br>");out.println("<br>");out.println("您输入的密码是:" + password + "<br>");out.println("<br>");out.println("用户名和密码正确</body></html>");out.close();} else {PrintWriter out = response.getWriter();out.println("<html><head><title>登录结果</title></head>");out.println("<body>");out.println("您输入的用户名或密码错误</body></html>");out.close();}}public boolean checkAuthority(String username, String pwd) {Connection conn = null;String sql;String url = "jdbc:mysql://localhost:3306/testdb?"+"user=root&password=123456&useUnicode=true&characterEncoding=UTF-8";try {Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动System.out.println("成功加载MySQL驱动程序");conn = DriverManager.getConnection(url);sql = "select * from user where name=? and pwd=?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, username);stmt.setString(2, pwd);ResultSet rs = stmt.executeQuery();if (rs.next()) {System.out.println(rs.getString(1) + "\t" + rs.getString(2)); return true;} else {return false;}} catch (SQLException e) {System.out.println("MySQL操作错误");e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}return false;}}输入正确的用户名密码结果输入错误的用户名密码结果。
jdbc增删改查实验报告
JDBC增删改查实验报告一、引言数据库是现代软件开发中不可或缺的一部分,而对数据库的操作也是开发中最常见的任务之一。
JDBC(Java Database Connectivity)是Java语言中用于与数据库进行交互的API。
本实验将通过使用JDBC进行增删改查操作,探索JDBC在数据库操作中的应用。
二、实验目的通过本实验,我们将达到以下目的: 1. 理解JDBC的基本概念和原理; 2. 掌握使用JDBC进行数据库连接和操作的方法; 3. 熟悉JDBC在增删改查中的应用; 4. 实践使用JDBC进行数据库操作。
三、实验环境本实验使用以下环境: - 操作系统:Windows 10 - JDK版本:Java 8 - 数据库:MySQL 8.0 - IDE:Eclipse四、实验步骤4.1 数据库准备在MySQL数据库中创建一个名为”test_db”的数据库,并创建一个名为”users”的表,表结构如下:CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,email VARCHAR(50));4.2 配置JDBC连接在Java项目中引入JDBC依赖,例如使用Maven管理依赖的项目,在pom.xml文件中添加以下代码:<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency></dependencies>4.3 连接数据库在Java代码中使用JDBC连接数据库,示例代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JdbcDemo {public static void main(String[] args) {// JDBC连接数据库String url = "jdbc:mysql://localhost:3306/test_db";String username = "root";String password = "123456";try {Connection connection = DriverManager.getConnection(url, username, password);// 连接成功,进行后续操作// ...} catch (SQLException e) {e.printStackTrace();}}}4.4 插入数据使用JDBC向数据库中插入数据,示例代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class JdbcDemo {public static void main(String[] args) {// JDBC连接数据库// ...try {// 插入数据String insertSql = "INSERT INTO users (name, age, email) VALUES (?, , )";PreparedStatement statement = connection.prepareStatement(insertSq l);statement.setString(1, "张三");statement.setInt(2, 20);statement.setString(3,"********************");int rows = statement.executeUpdate();if (rows > 0) {System.out.println("插入成功");} else {System.out.println("插入失败");}} catch (SQLException e) {e.printStackTrace();}}}4.5 查询数据使用JDBC从数据库中查询数据,示例代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JdbcDemo {public static void main(String[] args) {// JDBC连接数据库// ...try {// 查询数据String selectSql = "SELECT * FROM users";Statement statement = connection.createStatement();ResultSet resultSet = statement.executeQuery(selectSql);while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");String email = resultSet.getString("email");System.out.println("id: " + id + ", name: " + name + ", age: " + age + ", email: " + email);}} catch (SQLException e) {e.printStackTrace();}}}4.6 更新数据使用JDBC更新数据库中的数据,示例代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class JdbcDemo {public static void main(String[] args) {// JDBC连接数据库// ...try {// 更新数据String updateSql = "UPDATE users SET age = ? WHERE name = ?";PreparedStatement statement = connection.prepareStatement(updateSq l);statement.setInt(1, 25);statement.setString(2, "张三");int rows = statement.executeUpdate();if (rows > 0) {System.out.println("更新成功");} else {System.out.println("更新失败");}} catch (SQLException e) {e.printStackTrace();}}}4.7 删除数据使用JDBC从数据库中删除数据,示例代码如下:import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class JdbcDemo {public static void main(String[] args) {// JDBC连接数据库// ...try {// 删除数据String deleteSql = "DELETE FROM users WHERE name = ?";PreparedStatement statement = connection.prepareStatement(deleteSq l);statement.setString(1, "张三");int rows = statement.executeUpdate();if (rows > 0) {System.out.println("删除成功");} else {System.out.println("删除失败");}} catch (SQLException e) {e.printStackTrace();}}}五、实验总结通过本次实验,我们成功地使用JDBC进行了增删改查操作。
jdbc实验心得
JDBC实验心得1. 介绍JDBC(Java Database Connectivity)是Java语言访问数据库的标准API。
通过JDBC,可以实现Java程序与各种关系型数据库的连接与交互。
在本次实验中,我深入学习了JDBC的使用方法,并通过实际操作,对JDBC在开发中的重要性有了更深刻的认识。
本文将从以下几个方面详细探讨我在实验中的心得体会:•JDBC的基本概念及原理•JDBC连接数据库的步骤•实际操作中遇到的问题及解决方法•JDBC在开发中的应用场景•实验的收获和不足之处2. JDBC的基本概念及原理2.1 JDBC的作用和优势JDBC是Java语言连接数据库的标准接口。
它使得Java程序能够通过标准的数据库操作语句与数据库进行交互,实现数据的存储和查询等功能。
JDBC的优势在于它能够提供跨平台的数据库访问能力,而不依赖于特定的数据库或操作系统。
2.2 JDBC的工作原理JDBC的工作原理可以分为以下几个步骤:1.加载数据库驱动程序:在使用JDBC之前,需要先加载相应数据库的驱动程序。
通过Class.forName()方法加载驱动类,这个类实现了Java SQL接口规范。
2.建立数据库连接:通过DriverManager类的getConnection()方法,传入数据库URL、用户名和密码等参数,来建立与数据库的连接。
连接成功后,将返回一个Connection对象。
3.创建执行SQL语句的Statement对象:通过Connection对象的createStatement()方法,可以创建一个用于执行SQL语句的Statement对象。
4.执行SQL语句:使用Statement对象的executeQuery()或executeUpdate()方法,可以执行查询或更新操作。
5.处理查询结果或更新结果:当执行查询语句后,可以使用ResultSet对象来遍历查询结果集;当执行更新语句后,可以使用int值表示受影响的行数。
实验六 JDBC连接数据库
课程高级JAVA开发技术 _ 实验名称实验六 JDBC连接数据库教师审批签字一、实验目的掌握JDBC连接数据库二、实验内容1、通过JDBC/ODBC桥接方式访问Oralce数据库6.G.12、JDBC访问数据库6.G.2三、实验过程及结果实验源码:publicclass Constants {publicstatic String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";publicstatic String URL = "jdbc:odbc:myscott";publicstatic String USERNAME = "scott";publicstatic String PASSWORD = "tiger";}import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;publicclass DBUtil {Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException { String DRIVER = Config.getValue("driver");String URL = Config.getValue("url");String USERNAME = Config.getValue("username");String PASSWORD = Config.getValue("password");System.out.println("DRIVER");try {Class.forName(DRIVER);conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);return conn;} catch (Exception e) {thrownew SQLException("驱动错误或连接失败");}}public ResultSet executeQuery(String preparedSql, String[] param) { try {pstmt = conn.prepareStatement(preparedSql);if (param != null) {for (int i = i; i < param.length; i++) {pstmt.setString(i + 1, param[i]);}}rs = pstmt.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}publicint executeUpdate (String preparedSql, String[] param) { int num = 0;try {pstmt = conn.prepareStatement(preparedSql);if (param != null) {for (int i = 0; i < param.length; i++) {pstmt.setString(i + 1, param[i]);}}num = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return num;}publicvoid closeAll() {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (pstmt != null) {try {pstmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}package com.haiersoft.chat.client;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.sql.ResultSet;public class FrmRegist extends JFrame implements ActionListener { private JPanel p;private JLabel lblName, lblNickname, lblPwd, lblRePwd, lblSex, lblImage;private JTextField txtName, txtNickname;private JPasswordField txtPwd, txtRePwd;private JRadioButton rbMale, rbFemale;private JRadioButton[] ckbImage = new JRadioButton[8];private JButton btnOk, btnCancle, btnReturn;private String checkedHeadImg = null;public FrmRegist() {super("用户注册");p = new JPanel(null);lblName = new JLabel("用户名:");lblNickname = new JLabel("昵称:");lblPwd = new JLabel("密码:");lblRePwd = new JLabel("确认密码:");lblSex = new JLabel("性别:");lblImage = new JLabel("头像:");txtName = new JTextField(20);txtNickname = new JTextField(20);txtPwd = new JPasswordField(20);txtRePwd = new JPasswordField(20);rbMale = new JRadioButton("男");rbMale.setSelected(true);rbFemale = new JRadioButton("女");JPanel pimg = new JPanel(new GridLayout(2, 5));ButtonGroup bgimg = new ButtonGroup();for (int i = 0; i < ckbImage.length; i++) {ckbImage[i] = new JRadioButton(String.valueOf(i + 1),new ImageIcon("images/" + (i + 1) + ".gif"));bgimg.add(ckbImage[i]);pimg.add(ckbImage[i]);}btnOk = new JButton("确定");btnCancle = new JButton("取消");btnReturn = new JButton("返回");btnOk.addActionListener(this);btnCancle.addActionListener(this);btnReturn.addActionListener(this);ButtonGroup bgsex = new ButtonGroup();bgsex.add(rbMale);bgsex.add(rbFemale);lblName.setBounds(30, 30, 60, 25);txtName.setBounds(95, 30, 200, 25);lblNickname.setBounds(30, 60, 60, 25);txtNickname.setBounds(95, 60, 200, 25);lblPwd.setBounds(30, 90, 60, 25);txtPwd.setBounds(95, 90, 200, 25);lblRePwd.setBounds(30, 120, 60, 25);txtRePwd.setBounds(95, 120, 200, 25);lblSex.setBounds(30, 150, 60, 25);rbMale.setBounds(95, 150, 60, 25);rbFemale.setBounds(160, 150, 60, 25);lblImage.setBounds(30, 180, 60, 25);pimg.setBounds(95, 180, 280, 100);btnOk.setBounds(90, 290, 60, 25);btnCancle.setBounds(155, 290, 60, 25);btnReturn.setBounds(220, 290, 60, 25);p.add(lblName);p.add(txtName);p.add(lblNickname);p.add(txtNickname);p.add(lblPwd);p.add(txtPwd);p.add(lblRePwd);p.add(txtRePwd);p.add(lblSex);p.add(rbMale);p.add(rbFemale);p.add(lblImage);p.add(pimg);p.add(btnOk);p.add(btnCancle);p.add(btnReturn);this.add(p);this.setSize(400, 380);this.setLocation(300, 300);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {Object source = e.getSource();if (source == btnOk) {btnOkClick();}if (source == btnCancle) {btnCancleClick();}if (source == btnReturn) {btnReturnClick();}}private void btnOkClick() {String username = txtName.getText();String nickname = txtNickname.getText();String userpwd = new String(txtPwd.getPassword());String repwd = new String(txtRePwd.getPassword());int sex = 0;if (rbFemale.isSelected()) {sex = 1;}if (username.equals("")) {JOptionPane.showMessageDialog(btnOk, "用户名不能为空", "提示", JOptionPane.WARNING_MESSAGE);return;}if (nickname.equals("")) {JOptionPane.showMessageDialog(btnOk, "昵称不能为空", "提示", JOptionPane.WARNING_MESSAGE);return;}if (userpwd.equals("")) {JOptionPane.showMessageDialog(btnOk, "密码不能为空", "提示", JOptionPane.WARNING_MESSAGE);return;}if (userpwd.length() < 6 || userpwd.length() > 10) {JOptionPane.showMessageDialog(btnOk, "密码长度范围在6~10之间", "提示", JOptionPane.WARNING_MESSAGE);return;}if (repwd.equals("")) {JOptionPane.showMessageDialog(btnOk, "确认密码不能为空", "提示", JOptionPane.WARNING_MESSAGE);return;}if (!repwd.equals(userpwd)) {JOptionPane.showMessageDialog(btnOk, "确认密码和密码必须相同", "提示", JOptionPane.WARNING_MESSAGE);return;}if (userpwd.equals("haiersoft")) {JOptionPane.showMessageDialog(btnOk, "注册成功!", "提示", RMA TION_MESSAGE);btnCancleClick();} else {JOptionPane.showMessageDialog(btnOk, "注册失败!", "提示", RMA TION_MESSAGE);}}private void btnCancleClick() {txtName.setText("");txtNickname.setText("");txtPwd.setText("");txtRePwd.setText("");rbMale.setSelected(true);}private void btnReturnClick() {this.setV isible(false);FrmLogin frmLogin = new FrmLogin();frmLogin.setVisible(true);}private boolean registUser(String username, String nickname, String password, String sex, String headimg) {boolean r = false;DBUtil db = new DBUtil();try {db.getConnection();String sql = "INSERT INTO userdetails(username,nickname,password,sex,headimg) values(?,?,?,?,?)";int rs = db.executeUpdate(sql, new String[] { username, nickname, password, "" + sex, headimg });if (rs > 0) {r = true;}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {db.closeAll();}return r;}private boolean check(String uname, String upwd) {boolean r = false;DBUtil db = new DBUtil();try {db.getConnection();String sql = "SELECT nickname,headimg FROM userdetails WHERE username=? AND password=?";ResultSet rs = db.executeQuery(sql, new String[] { uname, upwd});if (rs != null && rs.next()) {r = true;ername = uname;FrmMain.nickname = rs.getString("nickname");FrmMain.headimg = rs.getString("headimg");}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {db.closeAll();}return r;}class ImageListener implements ItemListener {public void itemStateChanged(ItemEvent e) {JRadioButton source = (JRadioButton) e.getSource();if (source.isSelected()) {source.setBorderPainted(true);checkedHeadImg = source.getText() + ".gif";System.out.println(checkedHeadImg);} else {source.setBorderPainted(false);}}}public static void main(String[] args) {FrmRegist frmRegist = new FrmRegist();frmRegist.setV isible(true);}}四、实验中问题及心得对于这次实验,自己认为比较难。
jdbc实验心得
jdbc实验心得JDBC实验心得一、实验背景和目的JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,通过JDBC可以方便地连接和操作各种类型的数据库。
本次实验旨在通过编写Java程序使用JDBC连接数据库,并进行数据的增删改查操作,加深对JDBC的理解和掌握。
二、实验过程1. 环境准备:首先需要安装并配置好Java开发环境,包括JDK和IDE (如Eclipse或IntelliJ IDEA)。
然后下载并安装相应版本的数据库驱动程序,如MySQL Connector/J。
2. 创建数据库:根据实验需求,可以选择已有的数据库或创建新的数据库。
如果选择创建新的数据库,需要执行相应的SQL语句来创建表结构。
3. 导入驱动程序:将下载好的驱动程序导入到项目中,并在代码中引入相应的包。
4. 连接数据库:使用DriverManager类中的getConnection()方法来建立与数据库之间的连接。
需要提供数据库URL、用户名和密码等连接信息。
5. 执行SQL语句:通过Connection对象创建Statement对象,并使用Statement对象执行SQL语句。
可以执行查询语句、更新语句等不同类型的SQL语句。
6. 处理结果集:如果执行查询语句,则会返回一个ResultSet对象,可以通过ResultSet对象获取查询结果集中的数据。
7. 关闭资源:在完成所有操作后,需要关闭ResultSet、Statement 和Connection等资源,释放内存。
三、实验收获1. 掌握JDBC的基本使用方法:通过本次实验,我了解了JDBC的基本使用方法,包括建立数据库连接、执行SQL语句和处理结果集等。
2. 熟悉常用的JDBC API:在实验过程中,我熟悉了一些常用的JDBC API,如DriverManager类、Connection接口、Statement接口和ResultSet接口等。
jdbc实验报告总结
jdbc实验报告总结一、实验介绍本次实验是基于JDBC(Java Database Connectivity)的学习与应用。
JDBC是Java编程语言中的一种用于执行SQL语句的API,它可以让Java程序员轻松地访问数据库。
在本次实验中,我们将学习JDBC的使用方法,在MySQL数据库中创建表格、插入数据、查询数据,并将这些操作封装成Java程序。
二、实验步骤1. 安装MySQL数据库以及JDBC驱动程序。
2. 创建数据库及表格我们需要先创建一个名为“stu”的数据库,在该数据库下创建一个名为“student”的表格。
该表格包含了学生的ID、姓名、性别、年龄和成绩五个字段,其中ID为主键。
CREATE DATABASE stu;USE stu;CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),sex VARCHAR(2),age INT,score FLOAT(4,1));3. 编写Java程序连接数据库我们需要在Java程序中连接MySQL数据库,使用JDBC提供的API对数据库进行操作。
首先需要加载JDBC的驱动程序,然后获取数据库连接,接着执行SQL语句,最后关闭数据库连接。
Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/stu";String user = "root";String password = "";Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement();String sql = "SELECT * FROM student";ResultSet rs = stmt.executeQuery(sql);while(rs.next()){int id = rs.getInt("id");String name = rs.getString("name");String sex = rs.getString("sex");int age = rs.getInt("age");float score = rs.getFloat("score");System.out.println("ID:"+id+"\t姓名:"+name+"\t性别:"+sex+"\t 年龄:"+age+"\t成绩:"+score);}rs.close();stmt.close();conn.close();4. 插入数据我们需要向student表格中插入一些数据。
jdbc增删改查实验报告
jdbc增删改查实验报告一、实验目的本次实验旨在通过使用Java Database Connectivity (JDBC)技术,掌握数据库的增删改查操作。
二、实验环境本次实验使用的开发工具为Eclipse,数据库管理系统为MySQL。
三、实验过程1. 数据库连接在Java中使用JDBC连接到数据库需要以下步骤:1)加载数据库驱动程序;2)获取数据库连接;3)创建Statement对象或PreparedStatement对象。
示例代码如下:Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection(url, username, password);Statement stmt = conn.createStatement();其中url是指要连接的数据库地址,username和password是登录数据库所需的用户名和密码。
2. 数据库查询操作查询操作可以使用Statement对象或PreparedStatement对象执行SQL语句。
PreparedStatement对象比Statement对象更安全,因为它可以防止SQL注入攻击。
示例代码如下:PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE age > ?");pstmt.setInt(1, 18);ResultSet rs = pstmt.executeQuery();其中?表示占位符,可以通过setInt()等方法设置占位符的值。
3. 数据库插入操作插入操作需要使用PreparedStatement对象执行INSERT语句。
示例代码如下:PreparedStatement pstmt = conn.prepareStatement("INSERT INTO users(name, age) VALUES(?, ?)");pstmt.setString(1, "Tom");pstmt.setInt(2, 20);int rowsAffected = pstmt.executeUpdate();其中executeUpdate()方法返回受影响的行数。
报告_实验九 通过JDBC方式操作数据库
text4.setText(""); String SNO,SNAME,AGE; text4.setText("请输入要插入的信息"); SNO=text1.getText(); SNAME=text2.getText(); AGE=text3.getText(); String URL="jdbc:mysql://localhost:3306/mysql?Unicode=true&characterEncoding=GBK";
System.out.println(RS.getString(1)+'\t'+RS.getString(2)+'\t'+RS.getString(3) );
} con.close(); } catch (SQLException e) { System.out.println(e); }
}
}
public class Experiment_9_JDBC { public static void main(final String[] args) { Query query=new Query(); query.select();//查询 query.insert();//插入 query.delete();//删除 }
System.out.println(RS.getString(1)+'\t'+RS.getString(2)+'\t'+RS.getString(3) );
实验3 JDBC数据库操作
实验3 JDBC数据库操作
一、实验目的
1.掌握JDBC数据库操作。
2.复习Swing图形用户界面程序的编写。
二、实验环境
JDK1.7+Eclpise3.2
三、实验内容
1、编写一个程序,用一个JTable组件显示数据库shop中goods表的内容。
界面如下
点击相应的按钮完成相应的功能。
例如点击插入按钮,弹出对话框
输入数据,按确定按钮可以把记录插入数据库中,同时在JTable组件中刷新数据。
2、编写一个程序,使用Swing组件添加和查询数据库student中stuphoto表的内容。
界面
如下,点击添加菜单项,在添加学生信息界面添加学生:
点击添加学生信息按钮,添加一个学生,添加成功显示对话框:
点击查询菜单项,在查询学生信息界面查询学生信息:
四、实验结果
五、实验总结:。
实验四JDBC技术
实验四JDBC技术实验四JDBC应⽤【实验⽬的】:1.进⼀步熟悉MyEclipse下开发Web应⽤程序的步骤2.理解JDBC访问数据库的过程与步骤3.掌握MySQL数据库的创建与访问。
4.掌握数据库访问过程中⼏个常⽤类的使⽤5.掌握如何将JDBC技术与Servlet和JSP技术相结合,⽤于开发Web应⽤。
【实验内容】:创建与访问MySQL数据库;建⽴Web⼯程,将JSP技术与JDBC结合在⼀起使⽤。
验证课本例⼦。
【实验步骤】:(⼀)创建MySQL数据库1.选择“开始”->“所有程序”->“MySQL”->“MySQL Server 5.1”->“MySQL CommandLine Client”,进⼊命令⾏窗⼝。
输⼊密码:mysql,进⼊数据库管理系统。
2.创建数据库book_shop,使⽤命令create database book_shop;再选中数据库,使⽤命令:use book_shop;3.新建数据表books,并设置字段id为主键、⾃增长。
使⽤命令create table books( idint(8) auto_increment, name varchar(50), price float(8), author varchar(50), bookConcern varchar(50), counts int(4),primary key(id));4. 向该数据库中添加若⼲⾏记录,使⽤insert命令。
如:insert into books(name,price,author,bookConcern,counts)values(‘JSP Programming’,29.0,’‘sunyang technology’, ‘Post &Telecom Press’,106);注意:由于主键设成了⾃增长,因⽽在插⼊记录时不需要插⼊主键字段id。
(⼆)在MyEclipse的workspace中,新建⼀个Web⼯程JDBCDemo。
(完整word版)JDBC实验报告详细
实验二JDBC编程一、目的通过Java数据库访问程序的编写、调试,使学生掌握JDBC编程的基本方法,熟悉常用的JDBC API,促进学生对概念的理解,培养动手能力。
二、基本要求学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能;实现数据库访问的优化。
完成实验后,需要按时提交实验报告。
三、实验内容(1)复习数据库SQL语句的编写。
(2)编写Java数据库(使用ODBC-JDBC驱动)公共模块。
(3)建立数据库应用模型,对数据库进行操作。
(4)调试程序,实现数据库的访问。
3.1数据源的确定可能是我不知道怎么配置,我的电脑是Windows7系统,和学校WindowsXP 系统的电脑配置方法不太一样,需要在C:\Windows\System32路径中,找到odbcad32.exe才能顺利修改数据源。
数据源设置好了以后就可以编辑代码并正常运行了。
下面以一张截图展示我的数据库3.2数据库信息查询.一3.2.1代码import java.sql.*; /*此处提供了SQL包,就可以放心使用SQL语句了*/ public class Students{public static void main(String args[]){ //look out this "S" of "string" !String driver="sun.jdbc.odbc.JdbcOdbcDriver";/*这里定义了driver做驱动器使用,为了美观事先定义,其实放在Class.forName 的括号里也是完全正确的*/String url="jdbc:odbc:students";/*此处指定了数据库,要注意两者名字一定要一样,否则找不到数据源*/ String query="select name,num,course,score from students"; //focus on the SQL language :select...from... ! /*需要执行的SQL语句*/Connection con=null; /*链接的定义*/Statement s=null; /*Statement对象的定义,两者赋值null 是为了在try块出现异常的时候不会被判断为逻辑错误,认为变量没有赋值*/try{ /*第一个try块实现了驱动器的启动*/Class.forName(driver); //look out this "class" should write in Huge one!/*注意此处的Class需要大写!*/}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{ /*第二个try块实现查询功能*/con=DriverManager.getConnection(url);/*刚刚定义的url在这里用上,此时程序才真正与数据库相连*/s=con.createStatement(); /*新建一个Statement*/ResultSet r=s.executeQuery(query); /*query在这里用上,执行SQL语句,也就是按照我们的要求实现我们想完成的功能*/System.out.println("name:" + " num:" + " course:" + " score:");while(r.next()){ /*逐行查询,只要有值就执行while里的语句*//*注意以下的每一项name,num等都要与数据库中的题目想吻合*/ String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");/*注意这些名字一定要与数据库中的名字吻合!当然也可以用数字代替,但是我的数据库第一列是ID,所以要注意name是2,num是3,以此类推*/System.out.println(r1+ r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}finally{try{s.close(); /*关闭Statement对象*/con.close(); /*关闭连接*/}catch(SQLException e){e.printStackTrace();}} System.out.println("i am lagent");/*这条语句是一开始用于查找错误使用的*/ }}3.2.2运行截图13.3数据库信息查询.二3.3.1代码import java.sql.*;import java.util.*;public class Statement1{ /* pay attention the name of class must not be the same with the public style ! The first time i named it "Statement" so that it can't run successfully *//*英文是编程当时留下的痕迹,当时讲类名写作Statement,与关键字相同,因此出错不能正常运行,我的总结是在拿不准的情况加一个数字就可以避免这样的尴尬情况*/public static void main(String arg[]){String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:Students";String query="select * from students where score > 90"; /*整个程序与第一次编写的没有太大变动和突破,主要是对SQL功能的了解和语句利用的熟练,当时的想法是多写多体会,没考虑创新,在此也就不对语句做重复分析了*/ Connection con=null;Statement s=null;try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();ResultSet r=s.executeQuery(query);System.out.println("name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+r2+r3+r4);}}catch(SQLException e){e.printStackTrace();}finally{try{s.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}3.3.2运行截图23.4数据库信息查询.三3.4.1代码import java.sql.*;import java.util.*;import java.io.*;public class PreparedStatement1{public static void main(String arg[]){String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:Students";String query="select * from students where score > ?";/*要实现按键盘输入的参数来选择查询数据库中的数据,因此需要用“?”*/ Connection con=null;PreparedStatement ps=null;ResultSet r=null;try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{System.out.println("您想要查询分数的下限是:");con=DriverManager.getConnection(url);BufferedReader br=new BufferedReader(new InputStreamReader(System.in));/*带有缓冲区,可以实现从键盘的输入,从字符流中对文本*/try{int ms=Integer.parseInt(br.readLine().trim());/*将键盘输入的参数赋值给ms*///this told me to pay a try and catch , so i put them in a try kuaips=con.prepareStatement(query);/*注意在这里就实现预编译了,这里要注意prepare:小些打头,不是prepared*/ ps.setInt(1,ms); /*1是付给第一个“?”,这里就只有1个*/r=ps.executeQuery();/*因为已经预编译,这里不用在写query*/ }catch(Exception e){System.out.println(e);}System.out.println("name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+r2+r3+r4);}}catch(SQLException e){e.printStackTrace();}finally{try{ps.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}3.4.2运行截图31.程序开始运行的程序界面:2.输入参数后的程序界面:3.5数据库信息的增添、删除、修改3.5.1代码import java.sql.*;public class ALL{Connection con=null;Statement s=null;PreparedStatement ps=null;String driver="sun.jdbc.odbc.JdbcOdbcDriver";String url="jdbc:odbc:students";String query="select name,num,course,score from students";public void init(){ /*用init()将定义的对象和变量都初始化*/ try{Class.forName(driver);}catch(ClassNotFoundException e){System.err.println("ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();}catch(SQLException e){e.printStackTrace();}}public void output(){ /*先输出数据库的数据*/ try{ResultSet r=s.executeQuery(query);System.out.println("name:" + " num:" + " course:" + " score:");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");System.out.println(r1+ r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}}public void add(){try{System.out.println("增加语句之后:");s.executeUpdate("INSERT INTO students(name,num,course,score) V ALUES('三毛','20115407','JA V A高级应用',59)");/*执行更新方法,注意V ALUES后所赋的值对V ALUES前的数据库题目要一一对应,而且在所赋的值一定是用单引号包括*/}catch(Exception e){e.printStackTrace();}}public void change(){try{System.out.println("改变分数之后");ps=con.prepareStatement("UPDATE students SET score=0 WHERE name='三毛'");/*将name为三毛的一栏数据中的score改为0*/ps.executeUpdate();}catch(Exception e){e.printStackTrace();}}public void destroy(){try{s.close();con.close();ps.close();}catch(SQLException e){ e.printStackTrace();}}public static void main(String arg[]){ALL a=new ALL();try{a.init();a.output();a.add();a.output();a.change();a.output(); /*把需要实现的功能分开放在方法中,再在主函数中调用,逻辑清晰而且十分简洁漂亮*/}catch(Exception e){e.printStackTrace();}finally{a.destroy();}}}3.5.2运行截图4四、实验方法与实验步骤(1)根据课堂所学知识,写出JDBC编程的步骤,熟悉JDBC编程所用的类及接口,如Connection、Statement、ResultSet等等;(2)创建程序所要访问的数据库,打开控制面板,建立ODBC数据源,记录给数据库所起的数据源名称。
jdbc访问数据库实验总结
jdbc访问数据库实验总结
在进行jdbc访问数据库实验后,我对jdbc的使用有了更深刻的了解和认识。
以下是我的一些总结:
1. JDBC是一种用于Java编程语言的API,可帮助我们管理与数据库的连接和操作。
JDBC是Java SE的一部分,因此不需要单独下载或安装。
2. JDBC可以用于连接各种关系数据库,如MySQL、Oracle、SQL Server等,并提供了一些内置的驱动程序。
3. JDBC主要是通过sql语句进行对数据库的操作,需要对sql语句进行熟练的掌握。
例如:查询数据的语句为"SELECT * FROM tablename",插入数据的语句为"INSERT INTO tablename (field1,field2,...) VALUES(value1,value2,...)"。
4. 在使用JDBC时,必须导入相关的jar包,并且需要进行连接和断开连接等操作。
5. JDBC提供了PreparedStatement和Statement两种方式来执行sql语句。
其中PreparedStatement可以预编译sql语句,性能更高,也更安全,因为它可以对输入的参数进行安全过滤。
6. 在进行JDBC开发时,需要注意防止SQL注入攻击。
可以使用
PreparedStatement和参数化查询来防止SQL注入攻击。
总之,JDBC是Java应用程序连接关系数据库的通用方式,掌握JDBC的使用方法非常重要。
在进行实际应用开发时,需要能够熟练运用JDBC来操作数据库,避免一些常见的问题,如SQL注入攻击等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二JDBC编程一、目的通过Java数据库访问程序的编写、调试,使学生掌握JDBC编程的基本方法,熟悉常用的JDBC API,促进学生对概念的理解,培养动手能力。
二、基本要求学生需要按时达到指定实验室上机。
调试教学中使用的程序示例,并加以修改,增加程序的功能;实现数据库访问的优化。
完成实验后,需要按时提交实验报告。
三、实验内容(1)复习数据库SQL语句的编写。
(2)编写Java数据库(使用ODBC-JDBC驱动)公共模块。
(3)建立数据库应用模型,对数据库进行操作。
(4)调试程序,实现数据库的访问。
3.1数据源的确定可能是我不知道怎么配置,我的电脑是Windows7系统,和学校WindowsXP 系统的电脑配置方法不太一样,需要在C:\Windows\System32路径中,找到odbcad32.exe才能顺利修改数据源。
数据源设置好了以后就可以编辑代码并正常运行了。
下面以一张截图展示我的数据库3.2数据库信息查询.一import java.sql.*; /*此处提供了SQL包,就可以放心使用SQL语句了*/ public class Students{public static void main(String args[]){ //look out this "S" of "string" !String driver="";/*这里定义了driver做驱动器使用,为了美观事先定义,其实放在Class.forName 的括号里也是完全正确的*/String url="jdbc:odbc:students";/*此处指定了数据库,要注意两者名字一定要一样,否则找不到数据源*/String query="select name,num,course,score from students"; //focus on the SQL language :select...from... ! /*需要执行的SQL语句*/Connection con=null; /*链接的定义*/Statement s=null; /*Statement对象的定义,两者赋值null 是为了在try块出现异常的时候不会被判断为逻辑错误,认为变量没有赋值*/ try{ /*第一个try块实现了驱动器的启动*/Class.forName(driver); //look out this "class" should write in Huge one!/*注意此处的Class需要大写!*/}catch(ClassNotFoundException e){"ClassNotFoundException:"+e.getMessage());}try{ /*第二个try块实现查询功能*/con=DriverManager.getConnection(url);/*刚刚定义的url在这里用上,此时程序才真正与数据库相连*/s=con.createStatement(); /*新建一个Statement*/ResultSet r=s.executeQuery(query); /*query在这里用上,执行SQL语句,也就是按照我们的要求实现我们想完成的功能*/"name:" + " num:" + " course:" + " score:");while(r.next()){ /*逐行查询,只要有值就执行while里的语句*//*注意以下的每一项name,num等都要与数据库中的题目想吻合*/ String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");/*注意这些名字一定要与数据库中的名字吻合!当然也可以用数字代替,但是我的数据库第一列是ID,所以要注意name是2,num是3,以此类推*/r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}finally{try{s.close(); /*关闭Statement对象*/con.close(); /*关闭连接*/}catch(SQLException e){e.printStackTrace();}} "i am lagent");/*这条语句是一开始用于查找错误使用的*/ }}3.3数据库信息查询.二import java.sql.*;import java.util.*;public class Statement1{ /* pay attention the name of class must not be the same with the public style ! The first time i named it "Statement" so that it can't run successfully *//*英文是编程当时留下的痕迹,当时讲类名写作Statement,与关键字相同,因此出错不能正常运行,我的总结是在拿不准的情况加一个数字就可以避免这样的尴尬情况*/public static void main(String arg[]){String driver="";String url="jdbc:odbc:Students";String query="select * from students where score > 90"; /*整个程序与第一次编写的没有太大变动和突破,主要是对SQL功能的了解和语句利用的熟练,当时的想法是多写多体会,没考虑创新,在此也就不对语句做重复分析了*/ Connection con=null;Statement s=null;try{Class.forName(driver);}catch(ClassNotFoundException e){"ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();ResultSet r=s.executeQuery(query);"name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");;}}catch(SQLException e){e.printStackTrace();}finally{try{s.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}3.4数据库信息查询.三import java.sql.*;import java.util.*;import java.io.*;public class PreparedStatement1{public static void main(String arg[]){String driver="";String url="jdbc:odbc:Students";String query="select * from students where score > ?";/*要实现按键盘输入的参数来选择查询数据库中的数据,因此需要用“?”*/ Connection con=null;PreparedStatement ps=null;ResultSet r=null;try{Class.forName(driver);}catch(ClassNotFoundException e){"ClassNotFoundException:"+e.getMessage());}try{"您想要查询分数的下限是:");con=DriverManager.getConnection(url);BufferedReader br=new BufferedReader(new InputStreamReader(System.in));/*带有缓冲区,可以实现从键盘的输入,从字符流中对文本*/try{int ms=Integer.parseInt(br.readLine().trim());/*将键盘输入的参数赋值给ms*///this told me to pay a try and catch , so i put them in a try kuaips=con.prepareStatement(query);/*注意在这里就实现预编译了,这里要注意prepare:小些打头,不是prepared*/ ps.setInt(1,ms); /*1是付给第一个“?”,这里就只有1个*/r=ps.executeQuery();/*因为已经预编译,这里不用在写query*/ }catch(Exception e){;}"name:"+" num:"+" course:"+" score");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");;}}catch(SQLException e){e.printStackTrace();}finally{try{ps.close();con.close();}catch(SQLException e){e.printStackTrace();}}}}1.程序开始运行的程序界面:2.输入参数后的程序界面:3.5数据库信息的增添、删除、修改import java.sql.*;public class ALL{Connection con=null;Statement s=null;PreparedStatement ps=null;String driver="";String url="jdbc:odbc:students";String query="select name,num,course,score from students";public void init(){ /*用init()将定义的对象和变量都初始化*/ try{Class.forName(driver);}catch(ClassNotFoundException e){"ClassNotFoundException:"+e.getMessage());}try{con=DriverManager.getConnection(url);s=con.createStatement();}catch(SQLException e){e.printStackTrace();}}public void output(){ /*先输出数据库的数据*/ try{ResultSet r=s.executeQuery(query);"name:" + " num:" + " course:" + " score:");while(r.next()){String r1=r.getString("name");String r2=r.getString("num");String r3=r.getString("course");String r4=r.getString("score");r2+ r3+ r4);}}catch(SQLException e){e.printStackTrace();}}public void add(){try{"增加语句之后:");s.executeUpdate("INSERT INTO students(name,num,course,score) V ALUES('三毛','','JA V A高级应用',59)");/*执行更新方法,注意V ALUES后所赋的值对V ALUES前的数据库题目要一一对应,而且在所赋的值一定是用单引号包括*/}catch(Exception e){e.printStackTrace();}}public void change(){try{"改变分数之后");ps=con.prepareStatement("UPDATE students SET score=0 WHERE name='三毛'");/*将name为三毛的一栏数据中的score改为0*/ps.executeUpdate();}catch(Exception e){e.printStackTrace();}}public void destroy(){try{s.close();con.close();ps.close();}catch(SQLException e){ e.printStackTrace();}}public static void main(String arg[]){ALL a=new ALL();try{a.init();a.output();a.add();a.output();a.change();a.output(); /*把需要实现的功能分开放在方法中,再在主函数中调用,逻辑清晰而且十分简洁漂亮*/}catch(Exception e){e.printStackTrace();}finally{a.destroy();}}}四、实验方法与实验步骤(1)根据课堂所学知识,写出JDBC编程的步骤,熟悉JDBC编程所用的类及接口,如Connection、Statement、ResultSet等等;(2)创建程序所要访问的数据库,打开控制面板,建立ODBC数据源,记录给数据库所起的数据源名称。