大家好,又见面了,我是你们的朋友全栈君。
图
package com.jdbc.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class BaseConnection {
public static Connection getConnection(){//用这个方法获取mysql的连接
Connection conn=null;
try{
Class.forName("com.mysql.jdbc.Driver");//加载驱动类
conn=DriverManager.
getConnection("jdbc:mysql://localhost:3306/newsmanager","root","950107");//(url数据库的IP地址,user数据库用户名,password数据库密码)
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){//测试数据库是否连接成功的方法
Connection conn=BaseConnection.getConnection();
System.out.println(conn);
}
}
package com.jdbc.bean;
public class News {
private int id;
private String title;
private String content;
private int type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
package com.jdbc.bean;
public class NewsType {
private int id;
private String name;
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;
}
}
package com.jdbc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import com.jdbc.bean.News;
import com.jdbc.util.BaseConnection;
public class NewsDAO {
public ArrayList<News> getList(){//单表查询
ArrayList<News> ar=new ArrayList<News>();//存储从数据库中取出来的数据
Connection conn=BaseConnection.getConnection();//获取数据库连接
//sql执行器对象
PreparedStatement ps=null;
//结果集对象
ResultSet rs=null;//查询出来的数据先放到rs中
try{
String sql="select * from news";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();//执行数据库查询的方法,放到rs中
while(rs.next()){//rs对象相当于一个指针,指向数据库的一横行数据
News ne =new News();//封装数据
ne.setId(rs.getInt("id"));//rs指针指向id一行获取id一行数据,存储到ne中
ne.setTitle(rs.getString("title"));//rs指针指向title一行获取id一行数据,存储到ne中
ne.setContent(rs.getString("content"));//rs指针指向content一行获取id一行数据,存储到ne中
ne.setType(rs.getInt("type"));//rs指针指向id一行获取type一行数据,存储到ne中
ar.add(ne);//通过循环,把数据的数据依次存储在ne对象中,再把ne对象添加到ar数组中方便提取
}
}catch(Exception e){
e.printStackTrace();
}finally{//重点下面代码必须写,当数据库使用后必须关闭,如果没有关闭数据库的接口有限,下次就不能连接
try{
if(rs!=null){
rs.close();
}if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
return ar;//返回ar
}
public static void main(String[] args){
ArrayList<News> ar= new NewsDAO().getList();
for(News ne:ar){
System.out.println(ne.getId()+" "+ne.getTitle());
}
}
}
只需在NewsDao.java添加方法,代码如下
//该方法负责将传递过来的news对象中的数据存入到数据库中
public void insert(News ne){
Connection conn=BaseConnection .getConnection();
PreparedStatement ps=null;
String sql="insert into news(title,content,type)"+
"values(' "+ne.getTitle()+"','"+ne.getContent()+"',"+
ne.getType()+")";
try{
ps= conn.prepareStatement(sql);//把写好的sql语句传递到数据库,让数据库知道我们要干什么
int a=ps.executeUpdate();//这个方法用于改变数据库数据,a代表改变数据库的条数
if(a>0){
System.out.println("添加成功");
}else{
System.out.println("添加失败");
}
}catch(Exception e){
e.printStackTrace();
}try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
1)在NewsDAO.java文件下添加deleta方法,代码如下
public void delete(int id){//删除数据库中的数据
Connection conn=BaseConnection.getConnection();
PreparedStatement ps=null;
String sql="delete from news where id =?";
try{
ps=conn.prepareStatement(sql);
ps.setInt(1, id);
int a=ps.executeUpdate();
if(a>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
}
//本方法用于将传递过来的news对象中的值,根据id主键,改变数据库中的值
public void update(News ne){
Connection conn=BaseConnection.getConnection();
PreparedStatement ps=null;
String sql="update news set title=?,content=?,type=?"+
"where id=?";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,ne.getTitle());
ps.setString(2,ne.getContent());
ps.setInt(3,ne.getType());
ps.setInt(4,ne.getId());
int a=ps.executeUpdate();
if(a>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}if(conn!=null){
conn.close();
}
}catch(Exception e2){
e2.printStackTrace();
}
}
}
在com.jdbc.main包下创建TestMain.java,代码如下
package com.jdbc.main;
import java.util.ArrayList;
import java.util.Scanner;
import com.jdbc.bean.News;
import com.jdbc.dao.NewsDAO;
public class TestMain {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
NewsDAO nd=new NewsDAO();
while(true){
System.out.println("1.查看新闻 2.添加新闻 3.删除新闻 4.退出");
int a=sc.nextInt();
if(a==1){
ArrayList<News> ar =nd.getListAll();
System.out.println("编号\t标题\t内容");
for(News ne:ar){
System.out.println(ne.getId()+"\t"+ne.getTitle()+"\t"+ne.getContent());
}
}else if(a==2){
System.out.println("请输入新闻标题内容类别编号");
News ne=new News();
ne.setTitle(sc.next());
ne.setContent(sc.next());
ne.setType(sc.nextInt());
boolean b=nd.insert1(ne);//调用插入方法
System.out.println(b);
}else if(a==3){
System.out.println("请输入要删除的新闻编号");
int id =sc.nextInt();
boolean b=nd.delete(id);//调用删除方法
System.out.println(b);
}else{
break;
}
}
}
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158717.html原文链接:https://javaforall.cn
=