java mysql 增删改查语句示例

24 篇文章 0 订阅
3 篇文章 0 订阅

老师给的例子都在工程里,好麻烦,,,,整他一下

精华

增:
PreparedStatement ps = conn.prepareStatement("insert into tb_books(name) values(?)");
ps.setString(1, book.getName());
int row = ps.executeUpdate();


查:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from tb_books");
while (rs.next()) {
	println(rs.getInt("bookCount"));
}


改:
PreparedStatement ps = conn.prepareStatement("update tb_books set bookcount=?");
ps.setInt(1, bookCount);
int row = ps.executeUpdate();


删:
PreparedStatement ps = conn.prepareStatement("delete from tb_books where id=?");
ps.setInt(1, id);
ps.executeUpdate();

总结

增删改都会对数据库进行改动,都用:executeUpdate(), 有返回值
查不会对数据库进行改动,用executeQuery, 用ResultSet接收

关于

PreparedStatement ps = conn.prepareStatement();
Statement stmt = conn.createStatement();

的区别:
stmt不会改变
ps会改变,后面有?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完整版

增:

try {
	// 加载数据库驱动,注册到驱动管理器
	Class.forName("com.mysql.jdbc.Driver");
	// 数据库连接字符串
	String url = "jdbc:mysql://localhost:3306/db_database10?useUnicode=true&characterEncoding=utf8";
	// 数据库用户名
	String username = "root";
	// 数据库密码
	String password = "123456";
	// 创建Connection连接
	Connection conn = DriverManager.getConnection(url,username,password);
	// 添加图书信息的SQL语句
	String sql = "insert into tb_books(name,price,bookCount,author) values(?,?,?,?)";
	// 获取PreparedStatement
	PreparedStatement ps = conn.prepareStatement(sql);
	// 对SQL语句中的第1个参数赋值
	ps.setString(1, book.getName());
	System.out.println("name:"+book.getName());
	// 对SQL语句中的第2个参数赋值
	ps.setDouble(2, book.getPrice());
	// 对SQL语句中的第3个参数赋值
	ps.setInt(3,book.getBookCount());
	// 对SQL语句中的第4个参数赋值
	ps.setString(4, book.getAuthor());
	// 执行更新操作,返回所影响的行数
	int row = ps.executeUpdate();
	// 判断是否更新成功
	if(row > 0){
		// 更新成输出信息
		out.print("成功添加了 " + row + "条数据!");
	}
	// 关闭PreparedStatement,释放资源
	ps.close();
	// 关闭Connection,释放资源
	conn.close();
} catch (Exception e) {
	out.print("图书信息添加失败!");
	e.printStackTrace();
}




查:
try {
	// 加载数据库驱动,注册到驱动管理器
	Class.forName("com.mysql.jdbc.Driver");
	// 数据库连接字符串
	String url = "jdbc:mysql://localhost:3306/db_database10";
	// 数据库用户名
	String username = "root";
	// 数据库密码
	String password = "123456";
	System.out.print(password);
	// 创建Connection连接
	Connection conn = DriverManager.getConnection(url, username, password);
	// 获取Statement
	Statement stmt = conn.createStatement();
	// 添加图书信息的SQL语句
	String sql = "select * from tb_books";
	// 执行查询
	ResultSet rs = stmt.executeQuery(sql);
	// 实例化List对象
	List<Book> list = new ArrayList<Book>();
	// 判断光标向后移动,并判断是否有效
	while (rs.next()) {
		// 实例化Book对象
		Book book = new Book();
		// 对id属性赋值
		book.setId(rs.getInt("id"));
		// 对name属性赋值
		book.setName(rs.getString("name"));
		// 对price属性赋值
		book.setPrice(rs.getDouble("price"));
		// 对bookCount属性赋值
		book.setBookCount(rs.getInt("bookCount"));
		// 对author属性赋值
		book.setAuthor(rs.getString("author"));
		// 将图书对象添加到集合中
		list.add(book);
	}
	// 将图书集合放置到request之中
	request.setAttribute("list", list);
	rs.close(); // 关闭ResultSet
	stmt.close(); // 关闭Statement
	conn.close(); // 关闭Connection
} catch (ClassNotFoundException e) {
	e.printStackTrace();
} catch (SQLException e) {
	e.printStackTrace();
}



改:
try {
	// 加载数据库驱动,注册到驱动管理器
	Class.forName("com.mysql.jdbc.Driver");
	// 数据库连接字符串
	String url = "jdbc:mysql://localhost:3306/db_database10";
	// 数据库用户名
	String username = "root";
	// 数据库密码
	String password = "123456";
	// 创建Connection连接
	Connection conn = DriverManager.getConnection(url,username,password);
	// 更新SQL语句
	String sql = "update tb_books set bookcount=? where id=?";
	// 获取PreparedStatement
	PreparedStatement ps = conn.prepareStatement(sql);
	// 对SQL语句中的第一个参数赋值
	ps.setInt(1, bookCount);
	// 对SQL语句中的第二个参数赋值
	ps.setInt(2, id);
	// 执行更新操作
	ps.executeUpdate();
	// 关闭PreparedStatement
	ps.close();
	// 关闭Connection
	conn.close();
} catch (Exception e) {
	e.printStackTrace();
} 




 删:
try {
	// 加载数据库驱动,注册到驱动管理器
	Class.forName("com.mysql.jdbc.Driver");
	// 数据库连接字符串
	String url = "jdbc:mysql://localhost:3306/db_database10";
	// 数据库用户名
	String username = "root";
	// 数据库密码
	String password = "123456";
	// 创建Connection连接
	Connection conn = DriverManager.getConnection(url,username,password);
	// 删除图书信息的SQL语句
	String sql = "delete from tb_books where id=?";
	// 获取PreparedStatement
	PreparedStatement ps = conn.prepareStatement(sql);
	// 对SQL语句中的第一个占位符赋值
	ps.setInt(1, id);
	// 执行更新操作
	ps.executeUpdate();
	// 关闭PreparedStatement
	ps.close();
	// 关闭Connection
	conn.close();
} catch (Exception e) {
	e.printStackTrace();
} 




Statement接口在创建了数据库连接之后,就可以通过程序来调用SQL语句对数据库进行操作,
在JDBC中Statement接口封装了这些操作。Statement接口提供了执行语句和获取查询结果的基本方法


PreparedStatement接口继承于Statement接口,它拥有Statement接口中的方法,
而且PreparedStatement接口针对带有参数SQL语句的执行操作进行了扩展。
应用于PreparedStatement接口中的SQL语句,可以使用占位符“?”来代替SQL语句中的参数,然后再对其进行赋值。
使用PreparedStatement接口,不仅可以提高SQL的执行效率,而且还可以避免SQL语句的注入式攻击
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值