jdbc练习程序

2 篇文章 0 订阅

读取book.txt文件,将文件里图书信息保存进数据库
文件格式
1 鹿鼎记 金庸 500 三联出版社

要求:
一、建立表结构
二、针对图书的操作提取出业务接口

实现功能:
1、图书保存
2、可以按照图书编号修改对应的图书信息
3、可以根据id加载图书信息
4、可以根据id删除图书信息
5、分页查询图书信息(参数:开始页,每页显示多少条)


jdbc.properties
设置IP地址、databasename、用户名、密码

url = jdbc:mysql://XXX.XXX.XXX.XXX:3306/databasename?usUnicode=true&characterEncoding=utf8
driverClassName = com.mysql.cj.jdbc.Driver
user = xxx
password = xxx

**驱动加载**

```java
package edu.uestc.commons;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBHelp {
	public static String url ;
	public static String user ;
	public static String password ;
	public static String driverClassName ;
	//加载驱动,只加载一次
	static {
		try {
			//类加载器
			InputStream input = DBHelp.class.getClassLoader().getResourceAsStream("jdbc.properties");
			//加载配置文件
			Properties prop = new Properties();
			prop.load(input);
			driverClassName = prop.getProperty("driverClassName");
			url = prop.getProperty("url");
			user = prop.getProperty("user");
			password = prop.getProperty("password");
			Class.forName(driverClassName );
		} catch (ClassNotFoundException | IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
 	 * 获取数据库连接对象
 	 * @return
 	 * @throws SQLException 不能获取数据库连接时,抛出SQLException
 	 */
	public Connection getConnection() throws SQLException {
		return DriverManager.getConnection(url,user,password);
	}
	public void free(ResultSet rs,Statement stat,Connection conn) {
		
			try {
				if(rs != null)
					rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				try {
					if(stat != null)
						stat.close();
				} catch (Exception e) {
					
				}finally {					
						try {
							if(conn != null)
								conn.close();
						} catch (SQLException e) {
							e.printStackTrace();
						}
				}
			}
	}	
}

一、
建表,这里使用Mysql数据库

create table book(
	id int primary key auto_increment,
	name varchar(20) not null,   
	author varchar(12),
	price int not null,
	publisher varchar(20)
);

二、
提取出接口

package homework;

public interface BookService {
	/**
	 * 保存文件里的书籍
	 */
	public void save(int bookid,String bookname,String author,double price,String publisher);
	/**
	 * 保存一本新书
	 */
	public void save();
	/**
	 * 根据图书id删除图书信息
	 */
	public void delete(int bookid);
	/**
	 * 根据图书id查询图书信息
	 */
	public void selecte(int bookid);
	/**
	 * 分页查询
	 */
	public void paging(int start,int num);
	/**
	 * 按照图书id修改对应的图书信息
	 */
	public void ModifyID(int bookid,int newid);
	public void ModifyName(int bookid,String newname);
	public void ModifyAuthor(int bookid,String newauthor);
	public void ModifyPrice(int bookid,int newprice);
	public void ModifyPblisher(int bookid,String newpublisher);
}

1. 图书保存
两种保存方式,一种是读取txt文件保存里面的书籍,另一种是保存一本新书

/**
	 * 保存文件里的书籍
	 */
	@Override
	public void save() {
		Connection conn = null;
		Statement stat = null;
		try {
			conn = helper.getConnection();
			stat = conn.createStatement();
			try(BufferedReader readfile = new BufferedReader(new FileReader(file))){
				String line = null;
 				while((line = readfile.readLine())!=null) {			
 					String[] words = line.split("    ");				
 					String sql = "INSERT INTO book(id,name,author,price,publisher) VALUES(" 
 										+ words[0] + "," + "'" +  words[1]  + "'" + "," 
 										+ "'" + words[2] + "'" + ","  + words[3] + "," 
 										+"'" +  words[4] + "'" + ");";
 					System.out.println(sql);
 					stat.executeUpdate(sql);	 					
				}				
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}				
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			helper.free(null, stat, conn);
		}	
	}
/**
		 * 保存一本新书
		 */
	@Override
		public void save(int bookid,String bookname,String author,double price,String publisher) {
			int rs = 0;
			Connection conn = null;
			Statement stat = null;
			try {
				conn = helper.getConnection();
				stat = conn.createStatement();
	 			String sql = "INSERT INTO book(id,name,author,price,publisher) VALUES(" 
	 								+ bookid + "," + "'" +  bookname  + "'" + "," 
	 								+ "'" + author + "'" + ","  + price + "," +"'" +  publisher + "'" + ");";
	 			System.out.println(sql); 
	 			rs = stat.executeUpdate(sql);	
	 			if(rs>0) {
	 				System.out.println("保存成功");
	 			}
	 			else
	 				System.out.println("保存失败");
			}catch(SQLException e) {
				e.printStackTrace();
			}finally {
				helper.free(null, stat, conn);
			}			
	}

2. 可以按照图书编号修改对应的图书信息
这里只展示修改id,修改其他信息同理。

	/**
		 * 按照图书id修改对应的图书信息
		 */
		//修改id
	@Override
		public void ModifyID(int bookid,int newid) {
			int rs=0;
			Connection conn = null;
			Statement stat = null;
			try {
				conn = helper.getConnection();
				stat = conn.createStatement();
	 			String sql = "UPDATE book SET id=" + newid + " WHERE id=" + bookid +  ";";
	 			System.out.println(sql);
	 			rs = stat.executeUpdate(sql);	 
	 			if(rs>0) {
	 				System.out.println("修改成功");
	 			}
	 			else
	 				System.out.println("修改失败");
			}catch(SQLException e) {
				e.printStackTrace();
			}finally {			
				helper.free(null, stat, conn);
			}
		}
  1. 可以根据id加载图书信息
	/**
		 * 根据图书id查询图书信息
		 */
	@Override
		public void selecte(int bookid) {
			ResultSet rs = null;
			Connection conn = null;
			Statement stat = null;
			try {
				conn = helper.getConnection();
				stat = conn.createStatement();
	 			String sql = "SELECT * FROM book WHERE id=" + bookid + ";";
	 			System.out.println(sql);
	 			rs = stat.executeQuery(sql);	 
	 			while(rs.next()) {
	 				int id=rs.getInt("id");
	 				String name = rs.getString("name");
	 				String author = rs.getString("author");
	 				double price = rs.getDouble("price");
	 				String publisher = rs.getString("publisher");
	 				System.out.println("id: " + id + "  name: " + name + "  author: " + author + "  price: " + price + "  publisher: " + publisher);
	 			}
	 			rs.close();
			}catch(SQLException e) {
				e.printStackTrace();
			}finally {			
				helper.free(null, stat, conn);
			}	
		}
  1. 可以根据id删除图书信息

		/**
		 * 根据图书id删除图书信息
		 * @param bookid
		 */
	@Override
		public void delete(int bookid) {
			int rs=0;
			Connection conn = null;
			Statement stat = null;
			try {
				conn = helper.getConnection();
				stat = conn.createStatement();
	 			String sql = "DELETE FROM book WHERE id=" + bookid + ";";
	 			System.out.println(sql);
	 			rs = stat.executeUpdate(sql);	
	 			if(rs>0) {
	 				System.out.println("删除成功");
	 			}
	 			else
	 				System.out.println("删除失败");
			}catch(SQLException e) {
				e.printStackTrace();
			}finally {
				helper.free(null, stat, conn);
			}			
		}
  1. 分页查询图书信息(参数:开始页,每页显示多少条)
	/**
		 * 分页查询
		 */
	@Override
		public void paging(int start,int num) {
			ResultSet rs = null;
			Connection conn = null;
			Statement stat = null;
			try {
				conn = helper.getConnection();
				stat = conn.createStatement();
	 			String sql = "SELECT * FROM book ORDER BY ID LIMIT " +  (start-1) + "," + num + ";";
	 			System.out.println(sql);
	 			rs = stat.executeQuery(sql);	 
	 			while(rs.next()) {
	 				int id=rs.getInt("id");
	 				String name = rs.getString("name");
	 				String author = rs.getString("author");
	 				double price = rs.getDouble("price");
	 				String publisher = rs.getString("publisher");
	 				System.out.println("id: " + id + "  name: " + name + "  author: " + author + "  price: " + price + "  publisher: " + publisher);
	 			}
	 			rs.close();
			}catch(SQLException e) {
				e.printStackTrace();
			}finally {			
				helper.free(null, stat, conn);
			}	
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值