- 浏览: 51877 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xing_yeli:
谢谢大神!!
Action[/***] does not contain specified method (check logs) -
peng860226327:
...
JUnit 3.8.2和JUnit 4.8.1学习笔记 -
jiangli15:
写的真心的好!!
Spring 3.0 + Struts 2.1 + Hibernate 3.3 框架整合小结 -
清子123杨:
写得很清楚,多谢作者了
Spring 3.0 + Struts 2.1 + Hibernate 3.3 框架整合小结 -
zuoshou19w:
lynn.ge 写道
Spring 3.0 + Struts 2.1 + Hibernate 3.3 框架整合小结
万变不离其宗。。持久层怎么变也是JDBC,框架怎么新也是反射机制。。
今天刚好复习一下JDBC,顺便对MySql进行一个入门的学习。
环境:MySql 5.5 + Navicat for MySql 10.0.5 + MyEclipse 9.0
从MySql官方:http://www.mysql.com/ 下载了 mysql-connector-java-5.1.17-bin.jar
从MyEclipse的DB Browser中得到测试成功后的
驱动类:com.mysql.jdbc.Driver
链接URL:jdbc:mysql://localhost:3306/accp
准备的差不多了,实例就是 简单粗暴,直接有效 直接上代码。。
---------------------------------------我是华丽的无所不在的分割线-------------------------------------------
用户实体类:
package com.accp.jdbc.entity; /** * * @author Maxpin on 2011-10-04 * * 用户实体类 */ public class Userinfo { private int userid; // 编号 private String loginid; // 用户名 private String loginpwd; // 密码 private String username; // 姓名 /** * 构造方法 */ public Userinfo() { } /** * @param loginid * @param loginpwd * @param username */ public Userinfo(String loginid, String loginpwd, String username) { this.loginid = loginid; this.loginpwd = loginpwd; this.username = username; } /** * @param userid * @param loginid * @param loginpwd * @param username */ public Userinfo(int userid, String loginid, String loginpwd, String username) { this.userid = userid; this.loginid = loginid; this.loginpwd = loginpwd; this.username = username; } //getter & setter methods 略
Dao基类:包含了数据库链接、关闭、CRUD操作及MySql分页查询
package com.accp.jdbc.base; 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 java.util.ArrayList; import java.util.List; import com.accp.jdbc.entity.Userinfo; /** * * @author Maxpin on 2011-10-04 * * Dao基类:包含了数据库链接、关闭、CRUD操作及MySql分页查询 */ public class BaseDao { // 连接地址 private static final String url = "jdbc:mysql://localhost:3306/accp"; // 驱动类 private static final String driverClass = "com.mysql.jdbc.Driver"; // 用户名 private static final String uname = "root"; // 密码 private static final String pwd = "admin"; /** * 获取数据库连接 * * @return 连接对象 */ protected static Connection getConnection() { Connection conn = null; try { Class.forName(driverClass); conn = DriverManager.getConnection(url, uname, pwd); } catch (ClassNotFoundException e) { System.out.println("找不到驱动类"); } catch (SQLException e) { System.out.println("建立连接错误!"); } return conn; } /** * 关闭数据库连接 * * @param conn * 数据库连接 * @param rs * 结果集 * @param pstmt * 命令对象 */ public static void closeAll(Connection conn, ResultSet rs, Statement pstmt) { try { if (null != rs && !rs.isClosed()) { rs.close(); rs = null; } } catch (SQLException e) { System.out.println("关闭结果集出错!"); } try { if (null != pstmt && !pstmt.isClosed()) { pstmt.close(); pstmt = null; } } catch (SQLException e) { System.out.println("关闭命令对象出错!"); } try { if (null != conn && !conn.isClosed()) { conn.close(); conn = null; } } catch (SQLException e) { System.out.println("关闭链接出错"); } } /** * 保存指定用户信息 * * @param user * 用户对象 * @throws Exception * 抛出异常 */ public static void saveUserinfo(Userinfo user) throws Exception { if (null != user) { Connection conn = getConnection(); PreparedStatement pstmt = null; String sql = "insert into USERINFO values(null,?,?,?)"; try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getLoginid()); pstmt.setString(2, user.getLoginpwd()); pstmt.setString(3, user.getUsername()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { closeAll(conn, null, pstmt); } } else { throw new Exception("用户信息不能为空"); } } /** * 删除指定用户信息 * * @param user * 用户对象 * @throws Exception * 抛出异常 */ public static void deleteUserinfo(Userinfo user) throws Exception { if (null != user) { Connection conn = getConnection(); PreparedStatement pstmt = null; String sql = "delete from USERINFO where userid = ?"; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, user.getUserid()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { closeAll(conn, null, pstmt); } } else { throw new Exception("用户信息不能为空"); } } /** * 更新指定用户信息 * * @param user * 用户对象 * @throws Exception * 抛出异常 */ public static void updateUserinfo(Userinfo user) throws Exception { if (null != user) { Connection conn = getConnection(); PreparedStatement pstmt = null; String sql = "update USERINFO set loginid = ?,loginpwd = ?,username = ? where userid = ?"; try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getLoginid()); pstmt.setString(2, user.getLoginpwd()); pstmt.setString(3, user.getUsername()); pstmt.setInt(4, user.getUserid()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { closeAll(conn, null, pstmt); } } else { throw new Exception("用户信息不能为空"); } } /** * 查询指定用户信息 * * @param id * 用户编号 * @return 用户对象 * @throws Exception * 抛出异常 */ public static Userinfo queryUserinfo(int id) throws Exception { Userinfo user = null; Connection conn = getConnection(); PreparedStatement pstmt = null; ResultSet rs = null; String sql = "select * from USERINFO where userid = ?"; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); rs = pstmt.executeQuery(); if (rs.next()) { user = new Userinfo(id, rs.getString(2), rs.getString(3), rs.getString(4)); } } catch (SQLException e) { e.printStackTrace(); } finally { closeAll(conn, rs, pstmt); } return user; } /** * 分页查询用户信息列表 * * @param currentPage * 要查询页码 * @param pageSize * 每页显示条数 * @return 用户对象集合 * @throws Exception * 抛出异常 */ public static List<Userinfo> queryUserinfoList(int currentPage, int pageSize) throws Exception { // 计算当前页索引 int pageIndex = (currentPage - 1) * pageSize; List<Userinfo> userList = new ArrayList<Userinfo>(); Connection conn = getConnection(); PreparedStatement pstmt = null; ResultSet rs = null; // MySql分页可使用limit关键字:select * from tableName limit pageIndex,pageSize String sql = "select * from USERINFO limit ?,?"; try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1, pageIndex); pstmt.setInt(2, pageSize); rs = pstmt.executeQuery(); while (rs.next()) { userList.add(new Userinfo(rs.getInt(1), rs.getString(2), rs .getString(3), rs.getString(4))); } } catch (SQLException e) { e.printStackTrace(); } finally { closeAll(conn, rs, pstmt); } return userList; } }
测试类:
package com.accp.jdbc.test; import java.util.List; import com.accp.jdbc.base.BaseDao; import com.accp.jdbc.entity.Userinfo; /** * * @author Maxpin on 2011-10-04 * * 测试类 */ public class Test { public static void main(String[] args) { try { /* * MySql中的初始数据:(编号、用户名、密码、姓名) * 1 admin 123123 管理员 * 2 zhangsan 123123 张三 * 3 lisi 123123 李四 * 4 wangwu 123123 王五 * */ // 测试保存:赵六 BaseDao.saveUserinfo(new Userinfo("zhaoliu", "123123", "赵六")); // 测试更新:赵六 BaseDao.updateUserinfo(new Userinfo(5, "zhaoliu", "321321", "赵六2")); // 测试删除:王五 BaseDao.deleteUserinfo(new Userinfo(4, null, null, null)); // 测试查询:管理员 Userinfo user = BaseDao.queryUserinfo(1); System.out.println(user.getUserid() + " " + user.getLoginid() + " " + user.getLoginpwd() + " " + user.getUsername()); // 测试分页:查询第2页,每页2条。王五已被删除。 List<Userinfo> userList = BaseDao.queryUserinfoList(2, 2); for (Userinfo u : userList) { System.out.println(u.getUserid() + " " + u.getLoginid() + " " + u.getLoginpwd() + " " + u.getUsername()); } } catch (Exception e) { System.out.println(e.getMessage()); } } }
---------------------------------------我是华丽的无所不在的分割线-------------------------------------------
MySql给我的感觉还可以,就是在安装完成后要配置一下my.ini
好在5.5提供了MySQLInstanceConfig.exe可以很方便的进行配置操作。
操作步骤我是参照的 http://www.duote.com/tech/1/2430.html#contentbody
另外:
MySql自增列的关键字是:AUTO_INCREMENT
插入数据时,可以选择对该列赋值为 null 即可。
MySql分页可使用limit关键字:select * from tableName limit pageIndex,pageSize
发表评论
-
SSH+Log4j+JUnit+MySql整合Web Project练习小结,重点在Spring上如何进行JUnit测试
2011-10-05 18:45 3974前3天都是单独小练习,今天做一个整合小练习,看看会不会出现一些 ... -
Log4j.1.2.14 学习笔记【10月4日更新】
2011-10-03 14:41 1519Log4j学习笔记 2011年10月02日 环境 MyE ... -
JUnit 3.8.2和JUnit 4.8.1学习笔记
2011-10-02 11:54 4183JUnit学习笔记 2011年10月01日 环境 MyE ... -
Spring 3.0 + Struts 1.3 + Hibernate 3.3 框架整合小结
2011-08-29 21:37 1856导读: 前一阵对SS2H整合 ... -
jar文件的运行方式
2011-08-28 09:55 960jar是一种压缩格式,类似于.zip java 的开发工 ... -
知识补充:抽象方法abstract为什么不能与static、synchronized、native混用
2011-08-24 06:35 1574这个问题要从实际的逻辑角度去看的,首先要了解abstract, ... -
知识补充:ArrayList Vector LinkedList 区别与用法
2011-08-21 18:05 730ArrayList 和Vector是采用数组方式存储数据,此数 ... -
知识补充:Servlet与CGI
2011-08-21 17:00 1069一、CGI 1. 定义: CGI(Common G ... -
Action[/***] does not contain specified method (check logs)
2011-08-18 21:25 6992今天利用SS1H框架整合做练习的时候,出现了一个Action中 ... -
收集来的Struts1.x和Struts2的异同
2011-08-18 15:06 811特性 Struts1.x Stru ... -
Spring 3.0 + Struts 2.1 + Hibernate 3.3 框架整合小结
2011-08-17 22:05 3081引言: 学习SSH框架有一阵了,今天对SSH框架整合 ... -
纯JDBC、Hibernate、Spring的AOP声明式事务管理小结
2011-08-16 23:52 1568引言: 最近在中心的 ...
相关推荐
【燕十八mysql入门.zip】这个压缩包文件是一个针对MySQL数据库管理系统的基础学习资源,由知名教育者燕十八提供。燕十八以其通俗易懂的教学风格在IT教育领域颇受欢迎,他的资料通常深入浅出,适合初学者入门。这个...
《MySQL数据库基础及实例教程》是一本专注于MySQL数据库学习的教材,特别适合初学者和教育工作者。作者孔祥盛在本书中强调了实践性与易理解性,旨在帮助读者快速融入MySQL的学习过程中,将“学生被动学习”转变为...
- **实例丰富**:“书中的示例非常实用,帮助我快速掌握了如何将理论知识应用于实际项目中。” - **内容全面**:“除了介绍基本语法外,还涵盖了高级主题,如数据库安全、性能优化等。” - **结构清晰**:“章节编排...
Java编程语言是软件开发领域中最广泛使用的编程语言之一,...同时,配合"Java全套视频教程900集(java入门到精通).txt"文本资料,可以更系统地学习和复习所学内容,确保理论与实践相结合,成为一名熟练的Java程序员。
基本信息 作者: 林信良 丛书名: 学习笔记 出版社:清华大学出版社 ...appendixb mysql入门 557 b.1 安装、设定mysql 558 b.2 mysql的数据类型 560 b.3 建立数据库、数据表 561 b.4 进行crud操作 562
11. 应用实战:通过实例项目演示如何将所学知识应用于实际开发,可能包括搭建一个简单的博客系统或者用户管理系统。 作为一本课件,它还可能包含配套的PPT文件,这些PPT通常会以图文并茂的方式展示核心概念,辅助...
它们通常包含每章节的重点内容、实例分析和练习题,有助于巩固理论知识,并引导学习者进行自我检测和复习。PPT课件的结构化特点使其成为整理学习笔记、准备考试或快速回顾的重要参考资料。 程序源码部分是实践环节...
在本资源中,"PHP从入门到精通(第5版)第9章 PPT.zip" 包含了关于PHP编程语言深入学习的材料,特别是针对第9章的内容。PHP是一种广泛使用的开源脚本语言,主要应用于Web开发,可以嵌入到HTML中执行,以创建动态交互...
内容主要分为以下几个部分: 首先是简单入门程序'Hello World';接着介绍面向对象的编程技巧,如定义类、属性设定、方法调用以及子类的继承等;并解释了通过接口实现行为共享的编码规范;此外,还展示了异常捕获处理...
然后根据自己所处的学习阶段(入门、进阶或高级)来挑选合适的书籍。 2. **作者背景**:了解作者的背景对于评估书籍质量非常重要。一般而言,有多年实践经验的专家撰写的技术图书更值得信赖。 3. **评价和反馈**:...
总的来说,这个学习资料将为初学者提供一个全面的SQL入门指南,同时也对有一定经验的开发者进行复习和巩固。通过实际操作和理解这些概念,读者将能够有效地管理和操作数据库,提高其在数据分析和业务处理方面的技能...
- **Java基础知识笔记总结** 是一套全面覆盖 Java 基础知识点的学习资料,非常适合用于系统复习和备考。 - **html、css、javascript、servlet、jsp** 等 Web 开发相关的视频资料也非常重要,这些是构建现代 Web ...
6. 自学教材、讲义和笔记:这些材料可能是教师的授课笔记,或者是学生的学习心得,包含了深入的解释和实例,对于自主学习非常有帮助。 学习数据库原理与应用,不仅需要理解数据库的设计思想,还要熟练掌握SQL语言,...
3. **织梦实站仿制政府网系列课程**:共17节高清视频,通过实例项目来教授如何具体操作仿制政府类网站的方法。 #### 四、教程核心知识点详解 ##### 4.1 零基础织梦仿站系列教程 - **4.1.1 织梦CMS安装部署** - ...
1. **开发环境**:使用JDK 1.6进行编译和解释,MyEclipse作为集成开发工具,Tomcat 6作为JSP/Servlet容器,MySQL 5.1作为数据库服务器,同时需要MySQL的JDBC驱动和Navicat Lite作为数据库管理工具。 2. **MyEclipse...
python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...
"servlet和jsp知识复习"可能包含了JSP生命周期、隐含对象和EL(Expression Language)的复习内容,这些都是学习JSP的基础。 Tomcat是Apache软件基金会的开源Java Servlet容器,它实现了Java EE的Web部分,特别是...
在本课程中,可能会涉及关系型数据库管理系统,如MySQL或SQL Server,学习如何创建数据库、表,执行CRUD操作(创建、读取、更新、删除),以及使用索引、视图、存储过程等高级特性。理解数据库设计和优化对于任何...