所用的IDE为idea,数据库用的是Navicat for MySQL

好了,开始正题,今天要做person小项目,有以下几个步骤:

  • Navicat for MySQL数据库的构建,以及如何建person表
  • 在idea中导入mysql-connector-java-5.0.8-bin.jar包
  • 创建person小项目的目录
  • 具体代码的书写

第一步,Navicat for MySQL数据库的构建,以及如何person建表

Navicat for MySQL是一套管理和开发MySQL或MariaDB的理想解决方案,支持单一程序,可同时连接到MySQL和MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面,给MySQL或MariaDB新手以及专业人士提供了一组全面的工具。 —— [ 百度百科 ]

界面如图

 
其中,information_schema,mysql,performance_schema,test这四个数据库是这个软件自带的,我新建了两个数据库,命名规则是“db_object”.

新建person表,字段:id,name,age,description(注意数据类型及是否空值) 
 
必须要强调一下,主键这个东西,因为这个吃了好多亏,出现了各种bug。。 
主键:确定一个字段的唯一标识,一般都设置ID为主键,而且要设置自动递增。(被设置成主键的字段,务必是唯一标识

很搞笑的一点,不管是int型,还是varchar型,长度就是最普通的长度(不用转换成二进制什么的),比如说:varchar的长度是6,那么“小旺财666”就是长度6,即为数据的最大值


第二步,在idea中导入mysql-connector-java-5.0.8-bin.jar包

 
首先要在WEB-INF文件夹新建一个lib文件夹,把相应的jar包拖动到WEB-INF文件夹中,然后鼠标右键选择Add as Library,经过一系列的OK之后,就可以用这个jar包了。


第三步,创建person小项目的目录

 
注意在src中创建文件夹的时候,它可能有点怕生,要和之前的com.test黏在一起,这时候就可以选择Excluded(排斥的)把它们拆散。 
 
如图,dao文件夹是红色的,不能在里面创建Java.class。这时候呢,老套路,Mark Directory As(把目录变为) Cancel Excluded(取消排斥) 
 
依次创建com.test父目录,以及其下的三个子目录dao,entity,test。

-dao目录(Data Access Object), 数据访问对象是第一个面向对象的数据库接口 
-entity目录(实体),实体就是一个特定的软件模块。 
-test目录,最终的试行测试


第四步,具体代码的书写

-PersonDao文件

  1. public class Persondao {
  2. private final static String DRIVER ="com.mysql.jdbc.Driver";
  3. private final static String URL = "jdbc:mysql://localhost:3306/db_person";
  4. private final static String USERNAME = "root";
  5. private final static String PASSWORD = "root";

首先,你必须定义4个私有的静态全局变量。

  1. /**
  2. *添加一个人
  3. * @param person
  4. * @return boolean
  5. */
  6. public static boolean insert(Person person) {
  7. boolean flag = false;//
  8. try {
  9. Class.forName(DRIVER);//加载数据库驱动
  10. Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
  11. /*
  12. 使用jar包中的connection接口,并通过DriveManager类的静态方法getConnection()创建连接对象conn
  13. */
  14. String sql = "INSERT INTO t_person(name,age,description) VALUES(?,?,?)";//编写sql语句
  15. PreparedStatement ps = conn.prepareStatement(sql);////创建预处理对象ps
  16. ps.setString(1, person.getName());
  17. ps.setInt(2, person.getAge());
  18. ps.setString(3, person.getDescription());
  19. if (ps.executeUpdate() > 0) {
  20. flag = true;
  21. }
  22. ps.close();
  23. conn.close();
  24. } catch (ClassNotFoundException e) {
  25. e.printStackTrace();
  26. } catch (SQLException e) {
  27. e.printStackTrace();
  28. }
  29. return flag;
  30. }

注意,ps.setString(1,per.getName)这个必须严格按照顺序来,1,2,3在你建好的t_person表中,对应的就是name,age,description


  1. /**
  2. * 删除一个人
  3. * @param id
  4. * @return
  5. */
  6. public static boolean delete(int id){
  7. boolean flag = false;
  8. try{
  9. Class.forName(DRIVER);//加载数据库驱动
  10. Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//建立数据库连接
  11. String sql = "DELETE FROM t_person WHERE id="+id;//编写sql语句
  12. PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句
  13. if(ps.executeUpdate() > 0) {
  14. flag = true;
  15. }
  16. ps.close();
  17. conn.close();
  18. } catch (ClassNotFoundException e) {
  19. e.printStackTrace();
  20. } catch (SQLException e) {
  21. e.printStackTrace();
  22. }
  23. return flag;
  24. }

  1. /**
  2. * 根据ID改变一个人
  3. * @param id
  4. * @return
  5. */
  6. public static boolean update(Person person,int id){
  7. boolean flag = false;
  8. try{
  9. Class.forName(DRIVER);//加载数据库驱动
  10. Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//连接数据库
  11. String sql = "UPDATE t_person SET name=?,age=?,description=? WHERE id= "+id;//编写sql语句
  12. PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句
  13. ps.setString(1,person.getName());
  14. ps.setInt(2,person.getAge());
  15. ps.setString(3,person.getDescription());
  16. if(ps.executeUpdate() > 0) {
  17. flag = true;
  18. }
  19. ps.close();
  20. conn.close();
  21. } catch (ClassNotFoundException e) {
  22. e.printStackTrace();
  23. } catch (SQLException e) {
  24. e.printStackTrace();
  25. }
  26. return flag;
  27. }

  1. /**
  2. *根据ID查找一个人
  3. * @param id
  4. * @return
  5. */
  6. public static Person SelectById(int id){
  7. Person person = null;
  8. ResultSet rs = null;
  9. try{
  10. Class.forName(DRIVER);//加载数据库驱动
  11. Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//数据库连接
  12. String sql = "SELECT * FROM t_person WHERE id="+id;//编写sql语句
  13. PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句
  14. rs = ps.executeQuery();//在PrepareStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象
  15. while (rs.next())//若当前语句不是最后一行,则执行循环
  16. {
  17. /*
  18. ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针下移
  19. */
  20. person = new Person();
  21. person.setId(rs.getInt("id"));
  22. person.setName(rs.getString("name"));
  23. person.setAge(rs.getInt("age"));
  24. person.setDescription(rs.getString("description"));
  25. }
  26. ps.close();
  27. conn.close();
  28. } catch (ClassNotFoundException e) {
  29. e.printStackTrace();
  30. } catch (SQLException e) {
  31. e.printStackTrace();
  32. }
  33. return person;
  34. }

  1. /**
  2. * 搜素所有的人
  3. * @return
  4. */
  5. public static List<Person> select(){
  6. List<Person> list = new ArrayList<Person>();
  7. ResultSet rs = null;
  8. try{
  9. Class.forName(DRIVER);//加载数据库驱动
  10. Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//数据库连接
  11. String sql = "SELECT * FROM t_person";//编写sql语句
  12. PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句
  13. rs = ps.executeQuery();
  14. while (rs.next())
  15. {
  16. Person person = new Person();
  17. person.setId(rs.getInt("id"));
  18. person.setName(rs.getString("name"));
  19. person.setAge(rs.getInt("age"));
  20. person.setDescription(rs.getString("description"));
  21. list.add(person);
  22. }
  23. ps.close();
  24. conn.close();
  25. } catch (ClassNotFoundException e) {
  26. e.printStackTrace();
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. }
  30. return list;
  31. }
  32. }

-Person文件

  1. public class Person {
  2. private int id;//主键
  3. private String name;//姓名
  4. private int age;//年龄
  5. private String description;//描述
  6. public int getId() {
  7. return id;
  8. }
  9. public void setId(int id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public int getAge() {
  19. return age;
  20. }
  21. public void setAge(int age) {
  22. this.age = age;
  23. }
  24. public String getDescription() {
  25. return description;
  26. }
  27. public void setDescription(String description) {
  28. this.description = description;
  29. }

特别地,在根据ID查找一个人的时候

  1. /**
  2. * 需要把toString()方法重写。
  3. * @return
  4. */
  5. @Override
  6. public String toString() {
  7. return "Person{" +
  8. "id=" + id +
  9. ", name='" + name + '\'' +
  10. ", age=" + age +
  11. ", description='" + description + '\'' +
  12. '}';
  13. }
  14. }

-test

  1. public class test {
  2. public static void main(String[] args){
  3. // Person person = new Person();
  4. // person.setAge(0);
  5. // person.setName("吴晓阳");
  6. // person.setDescription("是个傻逼");
  7. // System.out.println(Persondao.insert(person));//增加一个人
  8. // System.out.println(Persondao.delete(2));//删除一个人
  9. // System.out.println(Persondao.update(person,4));
  10. // Person person =Persondao.SelectById(4);
  11. // System.out.println(person);
  12. List<Person> list = Persondao.select();//查找列表
  13. for(int i=0;i<list.size();i++){
  14. System.out.println(list.get(i));
  15. }
  16. }
  17. }

MySql保留的关键字

 
 
请特别注意,在写sql语句的时候,之前在Navicat定义的字段名称不能与上述关键词相同,会报错的。。

person小项目的更多相关文章

  1. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  2. IOS-小项目(饿了么 网络部分 简单实现)

    在介绍小项目之前,在此说明一下此代码并非本人所写,我只是随笔的整理者. 在介绍之前先展现一下效果图. 看过效果图大家应该很熟悉了,就是饿了么的一个界面而已,值得注意的是,实现时并没有采用本地连接,而是 ...

  3. Andriod小项目——在线音乐播放器

    转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...

  4. 模拟XShell的小项目

    不知道大家有没有用过XShell这款工具,这款工具通过windows可以远程操作处于开机状态的linux操作系统,也就是说把你的电脑和一台服务器连入网络,你通过输入服务器所在的IP地址建立一个会话就可 ...

  5. 小项目特供 贪吃蛇游戏(基于C语言)

    C语言写贪吃蛇本来是打算去年暑假写的,结果因为ACM集训给耽搁了,因此借寒假的两天功夫写了这个贪吃蛇小项目,顺带把C语言重温了一次. 是发表博客的前一天开始写的,一共写了三个版本,第一天写了第一版,第 ...

  6. 【PHP小项目使用MVC架构】

    小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目u ...

  7. MOGRE学习笔记(3)--MOGRE小项目练习

    学习OGRE有一段时间了,领导为了检测学习效果,根据已有C++项目,弄一个类似的用c#语言编写的小项目. 配置:win7,DirectX2009,vs2010. 项目要求: 1.有Ogre窗口(尺寸1 ...

  8. Web前端开发:SQL Jsp小项目(一)

    Jsp的学习算是告一段落,针对这段时间的学习,写了一个Jsp小项目来巩固学到的知识. 框架示意图 User list process UserAdd process 需要的界面效果: 需要工具:Ecl ...

  9. Ado.Net小练习02(小项目CUID

    前台界面: 后台代码: namespace ado.net小项目cuid {     public partial class Form1 : Form     {         //连接字符串   ...

  10. testservice小项目总结

    关于自做小项目testservice的总结: 1.Activity与Service的绑定及之间的通信: 1)关于Activity和Service的生命周期的理解: 2)bindService方法中Se ...

随机推荐

  1. gerrit上sshkey设置问题

    gerrit里面设置ssh的方法  http://blog.sina.com.cn/s/blog_4d4bc1110101dbxs.html `ssh-keygen -t dsa -b 1024` d ...

  2. CSS控制列表样式属性list-style有哪些?怎么用?

    CSS列表样式属性list-style有哪些类型?不同类型CSS控制列表样式使用时该注意什么? 这是W3Cschool用户Shirley于2016-11-10在W3Cschool编程问答提出的问题.云 ...

  3. CCPC-Wannafly Winter Camp Day1 (Div2, onsite)

    Replay Dup4: 要是不挂机,再多仔细想想就好了 J确实自闭好久,一直在想正确性,最后数据错了,喵喵喵? 还是要保证充足的休息啊,中间睡了一小会儿,也不知道睡了多久,醒来他们就又过了一道 要发 ...

  4. poj1151 Atlantis && cdoj 1600艾尔大停电 矩形面积并

    题目: Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23758   Accepted: 8834 Des ...

  5. SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集

    SecureCRT 下载,安装,绝佳配色,实用配置,上传下载配置合集 chocoball 发布于 2年前,共有 3 条评论 SecureCRT 是一款支持 SSH2.SSH1.Telnet.Telne ...

  6. 微信JS支付代码_前端调用微信支付接口

    转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...

  7. Python笔记 #12# Dictionary & Pandas: Object Creation

    Document of Dictionaries 10 Minutes to pandas tutorialspoint import pandas as pd data = [['Alex',10] ...

  8. 20145326 《Java程序设计》第10周学习总结

    教材学习内容总结 网络编程 •网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. •程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴. •在发送 ...

  9. Makefile解析(最简单的LED)

    ①led_sp.bin: start.o led.o #led_sp.bin是由 start.o 和 led.o 生成 ②arm-linux-ld -Ttext 0x0 -o led_sp.elf $ ...

  10. VC/MFC 编程技巧大总结

    1 toolbar默认位图左上角那个点的颜色是透明色,不喜欢的话可以自己改. 2 VC++中 WM_QUERYENDSESSION WM_ENDSESSION 为系统关机消息. 3 Java学习书推荐 ...