数据库入门之增删改查
来源:互联网 发布:python genetic 编辑:程序博客网 时间:2024/05/01 04:47
所用的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文件
public class Persondao { private final static String DRIVER ="com.mysql.jdbc.Driver"; private final static String URL = "jdbc:mysql://localhost:3306/db_person"; private final static String USERNAME = "root"; private final static String PASSWORD = "root";
首先,你必须定义4个私有的静态全局变量。
/** *添加一个人 * @param person * @return boolean */ public static boolean insert(Person person) { boolean flag = false;// try { Class.forName(DRIVER);//加载数据库驱动 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); /* 使用jar包中的connection接口,并通过DriveManager类的静态方法getConnection()创建连接对象conn */ String sql = "INSERT INTO t_person(name,age,description) VALUES(?,?,?)";//编写sql语句 PreparedStatement ps = conn.prepareStatement(sql);////创建预处理对象ps ps.setString(1, person.getName()); ps.setInt(2, person.getAge()); ps.setString(3, person.getDescription()); if (ps.executeUpdate() > 0) { flag = true; } ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return flag; }
注意,ps.setString(1,per.getName)这个必须严格按照顺序来,1,2,3在你建好的t_person表中,对应的就是name,age,description
/** * 删除一个人 * @param id * @return */ public static boolean delete(int id){ boolean flag = false; try{ Class.forName(DRIVER);//加载数据库驱动 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//建立数据库连接 String sql = "DELETE FROM t_person WHERE id="+id;//编写sql语句 PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句 if(ps.executeUpdate() > 0) { flag = true; } ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return flag; }
/** * 根据ID改变一个人 * @param id * @return */ public static boolean update(Person person,int id){ boolean flag = false; try{ Class.forName(DRIVER);//加载数据库驱动 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//连接数据库 String sql = "UPDATE t_person SET name=?,age=?,description=? WHERE id= "+id;//编写sql语句 PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句 ps.setString(1,person.getName()); ps.setInt(2,person.getAge()); ps.setString(3,person.getDescription()); if(ps.executeUpdate() > 0) { flag = true; } ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return flag; }
/** *根据ID查找一个人 * @param id * @return */ public static Person SelectById(int id){ Person person = null; ResultSet rs = null; try{ Class.forName(DRIVER);//加载数据库驱动 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//数据库连接 String sql = "SELECT * FROM t_person WHERE id="+id;//编写sql语句 PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句 rs = ps.executeQuery();//在PrepareStatement对象中执行SQL查询,并返回该查询生成的ResultSet对象 while (rs.next())//若当前语句不是最后一行,则执行循环 {/* ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针下移*/ person = new Person(); person.setId(rs.getInt("id")); person.setName(rs.getString("name")); person.setAge(rs.getInt("age")); person.setDescription(rs.getString("description")); } ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return person; }
/** * 搜素所有的人 * @return */ public static List<Person> select(){ List<Person> list = new ArrayList<Person>(); ResultSet rs = null; try{ Class.forName(DRIVER);//加载数据库驱动 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);//数据库连接 String sql = "SELECT * FROM t_person";//编写sql语句 PreparedStatement ps = conn.prepareStatement(sql);//sql执行语句 rs = ps.executeQuery(); while (rs.next()) { Person person = new Person(); person.setId(rs.getInt("id")); person.setName(rs.getString("name")); person.setAge(rs.getInt("age")); person.setDescription(rs.getString("description")); list.add(person); } ps.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return list; } }
-Person文件
public class Person { private int id;//主键 private String name;//姓名 private int age;//年龄 private String description;//描述 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; }
特别地,在根据ID查找一个人的时候
/** * 需要把toString()方法重写。 * @return */ @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", description='" + description + '\'' + '}'; }}
-test
public class test { public static void main(String[] args){// Person person = new Person();// person.setAge(0);// person.setName("吴晓阳");// person.setDescription("是个傻逼");// System.out.println(Persondao.insert(person));//增加一个人// System.out.println(Persondao.delete(2));//删除一个人// System.out.println(Persondao.update(person,4));// Person person =Persondao.SelectById(4);// System.out.println(person); List<Person> list = Persondao.select();//查找列表 for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } }}
MySql保留的关键字
请特别注意,在写sql语句的时候,之前在Navicat定义的字段名称不能与上述关键词相同,会报错的。。
脚注
第一次写博客,因为自己比较笨,所以代码写的比较全,而且可能很多地方解释会有不当,望各批评指正,谢谢大家~
目录
- 第一步Navicat for MySQL数据库的构建以及如何person建表
- 第二步在idea中导入mysql-connector-java-508-binjar包
- 第三步创建person小项目的目录
- 第四步具体代码的书写
- MySql保留的关键字
- 脚注
- 目录
- 数据库入门之增删改查
- 数据库入门---增删改查
- 入门C#之数据库增删改查I
- 入门C#之数据库增删改查II
- 数据库入门(增删查改)
- Mybatis入门之增删改查(CRUD)
- sqlite数据库之增删改查
- sqlite数据库之二增删查改
- 数据库增删改查之增
- 数据库增删改查之更
- 数据库增删改查之删
- iOS CoreData数据库之增删改查
- 数据库之SQLite增删改查
- JAVA访问数据库之增删改查
- android之数据库的增删改查
- 数据库操作之增删改查
- 数据库之MySQL增删改查记录
- 数据库-增删改查
- pojo的排序问题疑问
- 学习计划-16.09.21
- Convert Sorted Array to Binary Search Tree——Difficulty:Medium
- [整理]-iOS- 原生二维码的扫描实现
- HDU 5898 基础数位DP
- 数据库入门之增删改查
- CentOS 6.3(x86_64)下安装Oracle 10g R2
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- Mysql Join语法解析与性能分析
- java工作摘记-本地项目测试流程
- React Native 生命周期
- java enum(枚举)理解
- python+selenium自动化测试学习笔记一
- mac 下安装 mysql