1.创建dbconfig.properties文件
2.创建数据库连接工厂
3.创建entity对象实体类
4.创建Dao接口
5.创建实现Dao接口的实现类,写入具体实现功能
6.创建测试类实现main方法
1.driver=com.mysql.jdbc.Driver
dburl=jdbc\:mysql\://localhost\:3306/jikedb
user=root
password=123456
|
|||||||||||
|
2.package ConnectionControl; /** * 连接工厂类 */ import java.sql.Connection; import java.io.InputStream; import java.sql.DriverManager; import java.util.Properties;
public class ConnectionFactory { private static String driver; private static String dburl; private static String user; private static String password;
private static final ConnectionFactory factory = new ConnectionFactory(); private ConnectionFactory(){} //建立一个getInstance()获取ConnectionFactory的一个实例 为了保证对象是单例的 为单利模式 public static ConnectionFactory getInstance(){ return factory; } static{ //定义一个Properties类 继承hashTable 可以用来处理文件中存储的键值对 Properties prop = new Properties(); try { //通过类加载器的getResourceAsStream()方法将属性文件中的内容读取到一个输入流中 InputStream in = ConnectionFactory.class.getClassLoader() .getResourceAsStream("dbconfig.properties"); //从输入流中读取键值对列表 prop.load(in); } catch (Exception e) { System.out.println("=====配置文件读取错误======"); e.printStackTrace(); } //将读取到的值给变量 driver = prop.getProperty("driver"); dburl = prop.getProperty("dburl"); user = prop.getProperty("user"); password = prop.getProperty("password"); } //用来保存数据库连接 private Connection conn; //创建连接数据库的方法 public Connection makeConnection(){ try { Class.forName(driver); conn=DriverManager.getConnection(dburl,user,password); } catch (Exception e) { e.printStackTrace(); } return conn; }
} |
||||||||||
|
|
||||||||||
|
|||||||||||
|
3.package com.hand.entity;
public class Address { private long adress_id; private String city; private String country; private long id; public long getAdress_id() { return adress_id; } public void setAdress_id(long adress_id) { this.adress_id = adress_id; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public long getId() { return id; } public void setId(long id) { this.id = id; } @Override public String toString() { return "Address [address_id=" + adress_id + ", city=" + city + ", country=" + country + ", id=" + id + "]"; } public Address(long id) { super(); this.id = id; } public Address(){
}
} |
||||||||||
|
|||||||||||
|
|
||||||||||
|
|||||||||||
|
4.package com.hand.dao; /** * 接口用来定义实现类的外观,既是实现类的行为 * 具体的实现类除了要实现接口约定的行为,也可以自定义行为,使系统更加灵活 */ import java.sql.Connection; import java.sql.SQLException;
import com.hand.entity.Address;
public interface AddressDao { /** * 保存地址信息的增删改查方法 */ public void insert(Connection conn,Address address) throws SQLException; public void update(Connection conn,Address address) throws SQLException; public void delete(Connection conn,Address address) throws SQLException; public void select(Connection conn,Address address) throws SQLException; } |
||||||||||
|
|||||||||||
|
|
||||||||||
|
|||||||||||
|
5.package com.hand.dao.impl;
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
import com.hand.dao.AddressDao; import com.hand.entity.Address;
public class AddressDaoImpl implements AddressDao { //插入 @Override public void insert(Connection conn, Address adress) throws SQLException { String str = "insert into address (adress_id,city,country,id) values (?,?,?,?)"; PreparedStatement ps = conn.prepareStatement(str); ps.setLong(1, adress.getAdress_id()); ps.setString(2,adress.getCity()); ps.setString(3,adress.getCountry()); ps.setLong(4, adress.getId());
int count = ps.executeUpdate(); System.out.println("===向用户表中插入了" + count + "条记录==="); } //删除 @Override public void delete(Connection conn, Address address) throws SQLException { String str = "delete from address where id=?"; PreparedStatement ps = conn.prepareStatement(str); ps.setLong(1, address.getId()); int count = ps.executeUpdate(); System.out.println("===已删除地址表中"+count+"条数据"); } //更新 @Override public void update(Connection conn, Address address) throws SQLException { String str = "update address set city=? where id=?"; PreparedStatement ps = conn.prepareStatement(str); ps.setString(1, address.getCity()); ps.setLong(2, address.getId()); int count = ps.executeUpdate(); System.out.println("===已向地址表中更新了"+count+"条数据==="); } //查询 @Override public void select(Connection conn, Address address) throws SQLException { String str = " select * from address"; PreparedStatement ps = conn.prepareStatement(str); ResultSet rs = ps.executeQuery(); while(rs.next()){ System.out.print(rs.getLong("adress_id")+" "); System.out.print(rs.getString("city")+" "); System.out.print(rs.getString("country")+" "); System.out.println(rs.getLong("id")+" "); } System.out.println("===查询完毕===");
}
} |
||||||||||
|
|||||||||||
|
|
||||||||||
|
|||||||||||
|
6.package com.hand.dao.impl; /** * address表的增删改查测试 */ import java.sql.Connection; import java.sql.SQLException;
import com.hand.dao.AddressDao; import com.hand.entity.Address;
import ConnectionControl.ConnectionFactory;
public class AddressDaoImplTest {
public static void main(String[] args) { Connection conn=null; try { conn=ConnectionFactory.getInstance().makeConnection(); conn.setAutoCommit(false); AddressDao addressDao = new AddressDaoImpl();
// /** // * 测试地址表插入操作 // */ // Address address = new Address(); // address.setAdress_id(2); // address.setCity("beijing"); // address.setCountry("china"); // address.setId(2); // addressDao.insert(conn, address);
/** * 测试查询操作 */ Address address = new Address(); addressDao.select(conn, address);
// /** // * 测试更新操作 // */ // Address address = new Address(2); // address.setCity("guangzhou"); // addressDao.update(conn, address);
// /** // * 测试删除操作 // */ // Address address = new Address(2); // addressDao.delete(conn, address);
conn.commit(); } catch (Exception e) { e.printStackTrace(); //若有异常则进行事物回滚 try { conn.rollback(); System.out.println("===已进行事物回滚==="); } catch (Exception e2) { e2.printStackTrace(); } } try { conn.close(); System.out.println("done"); } catch (SQLException e) { e.printStackTrace(); } }
} |
||||||||||
|
相关推荐
本主题聚焦于“jsp页面,连接数据库实现增删改查”,这涉及到前端用户界面的设计以及后端与数据库的交互。下面我们将深入探讨这一主题。 首先,`友好而美观的jsp页面实现用户注册`,这涉及到JSP页面的布局设计和...
在Java编程中,连接数据库并实现增删改查(CRUD)操作是常见的任务,尤其在构建管理系统如教师管理系统时。下面将详细讲解这个过程涉及的关键知识点。 首先,要连接数据库,我们需要使用Java的JDBC(Java Database ...
本文将详细讨论如何使用PHP连接数据库并实现增删改查功能,以满足一个基础的登录系统需求。这个系统允许用户执行添加数据、删除数据、更新数据以及查询所有数据的操作,具有良好的扩展性和代码灵活性。 首先,我们...
Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬编码问题) 用户账号实体类 User....
Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现) 实体类:User.java 接口类:IUserDao.java 实现接口类:UserDaoImpl.java 使用Junit4测试增删改查类:UserDaoTest.java
一个简单的数据库链接例子 在WPF界面上进行操作 实现对数据库数据的增删改查 适合初初初学者 高手不要下 也别喷我
"jsp连接Oracle数据库实现增删改查"这个项目旨在教你如何利用JSP(JavaServer Pages)技术来构建一个完整的用户管理系统,包括登录、注册以及对数据表(如学生表)的CRUD(Create, Read, Update, Delete)操作。...
Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬...
QT版本5.14,实现了连接MySQL进行了增删改查操作,和分页操作。解决了中文SQL提示成功但是执行失败问题。博客地址:https://blog.csdn.net/qq_37529913?spm=1001.2101.3001.5113
增删改查功能可以通过DataGrid的内置事件来实现。例如,当用户在DataGrid中添加新行时,我们可以捕获“CellEditEnding”事件,然后插入新的记录到数据库。对于删除操作,可以监听“RowDeleting”事件;更新数据则...
在这个"jsp连接SQLserver数据库实现增删改查"的项目中,你将学习到如何结合JSP、JDBC和SQL Server来创建一个完整的Web应用。教程中的详细步骤会指导你完成每个操作,让你快速掌握数据库操作的核心技能。记住,实践是...
### C#连接数据库完成增删改查的知识点详解 #### 一、概述 在软件开发过程中,数据库操作是一项非常基础且重要的技能...以上就是使用C#语言连接SQL Server数据库,并实现增删改查功能的详细解析。希望对你有所帮助!
使用c3p0连接数据库实现增删改查 c3p0是一个开源的数据库连接池,通过使用c3p0可以实现数据库连接的自动管理,提高数据库操作的效率和安全性。下面详细介绍了使用c3p0连接数据库实现增删改查的知识点: 1. 准备JAR...
在 C# 中使用控件 DataGridView ...在 C# 中使用控件 DataGridView 实现数据库增删改查需要连接到数据库、创建 DataSet 和 SqlDataAdapter 对象、加载数据到 DataGridView 控件、实现增删改查操作和实现按钮单击事件。