package util;
import java.sql.ResultSet;
import java.util.Scanner;
public class NewsDao extends BaseDao {
Scanner sc=new Scanner(System.in);
/**
* 插入数据
*/
public void insert(){
System.out.println("请输入新闻标题:");
String title=sc.next();
System.out.println("请输入新闻内容:");
String content=sc.next();
String sql="insert into news(title,content) values(?,?)";//?为占位符
Object[] obj={title,content};
getConnection(); //连接数据库
int row=executeUpdate(sql,obj); //返回受影响的行数
if (row==1){ //通过row判断操作是否成功
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
closeAll(rs,pstmt,conn); 关闭连接
}
/**
* 删除操作
*/
public void delete(){
System.out.println("请输入要删除新闻的编号:");
int id=sc.nextInt();
String sql="delete from news where id=?";
Object[] obj={id};
getConnection();
int row=executeUpdate(sql,obj);
if (row==1){
System.out.println("删除成功!");
}else{
System.out.println("删除失败!");
}
closeAll(rs,pstmt,conn);
}
/**
* 修改新闻标题
*/
public void update(){
System.out.println("请输入要修改的新闻编号:");
String fid=sc.next();
System.out.println("请输入修改后的新闻标题:");
String title=sc.next();
Object[] obj={title,fid};
String sql="update news set title=? where id=?";
getConnection();
int row=executeUpdate(sql,obj);
if (row==1){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
closeAll(rs,pstmt,conn);
}
/**
* 查询
*/
public void show(){
String sql="select * From news";
ResultSet rs=executeQuery(sql,null);
try{
while(rs.next()){
System.out.println(rs.getInt("id")+"\t"+rs.getString("title")+"\t"+rs.getString("content")+"\t"+
rs.getString("time")+"\n");
}
}catch (Exception e){
e.printStackTrace();
}finally {
closeAll(rs,pstmt,conn);
}
}
}
这是JDBC连接数据库的工具类,我前面的文章有讲!
package util;
import java.sql.*;
/**
* 数据库工具类
*/
public class BaseDao {
public Connection conn=null;
public PreparedStatement pstmt=null;
public ResultSet rs=null;
/**
* 获取连接对象
* @return
*/
public Connection getConnection(){
//数据库驱动类路径
String driver = "com.mysql.cj.jdbc.Driver";
//jdbc:mysql是固定写法
//localhost代表本地主机,就是数据库在自己电脑上
//3306是默认的mysql端口号,也有的是3308
//easybuy是数据库名称
String url = "jdbc:mysql://localhost:3306/easybuy";
//数据库账户
String userName = "root";
//数据库密码
String password = "123456";
try {
//加载驱动
Class.forName(driver);
//获取连接对象(建立和数据库的连接,并返回表示连接的Connection对象)
conn = DriverManager.getConnection(url, userName, password);
}catch (Exception e){
e.printStackTrace();
}
return conn;
}
/**
* 逆向关闭
* @param rs
* @param pstmt
* @param conn
*/
public void closeAll(ResultSet rs, PreparedStatement pstmt,Connection conn){
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @param sql 执行语句
* @param obj sql参数
* @return 受影响的行数
*/
public int executeUpdate(String sql,Object[] obj){
int row=0;
getConnection();
//获取执行对象 ?:占位符
try {
pstmt = conn.prepareStatement(sql);
if(obj!=null){
for(int i=0;i<obj.length;i++){
pstmt.setObject(i+1,obj[i]);
}
}
//获取行数
row=pstmt.executeUpdate();
System.out.println(row);
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeAll(rs,pstmt,conn);
}
return row;
}
/**
* 执行查询操作
* @param sql 查询语句
* @param obj 参数
* @return 结果集
*/
public ResultSet executeQuery(String sql,Object[] obj){
getConnection();
try {
pstmt = conn.prepareStatement(sql);
if(obj!=null){
for(int i=0;i<obj.length;i++){
//设置参数
pstmt.setObject(i+1,obj[i]);
}
}
rs=pstmt.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
}