前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java通过JDBC连接数据库及增删改查操作

java通过JDBC连接数据库及增删改查操作

作者头像
全栈程序员站长
发布2022-09-14 11:33:31
9200
发布2022-09-14 11:33:31
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1.实战数据库数据的准备

创建数据库(newsmanager),然后创建表news(id,title,content,type)和newstype(id,name),其中news的type和newstype的id为主外键关系,如下图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

2.JDBC的介绍

1)一种执行SQL语言的Java API 2)可以对所以主流数据库进行统一访问(access,MySQL,sql server,Oracle) 3)极大地减少了程序操作数据库的复杂性 4)jdbc使用面向对象的方式操作数据,能更好的和Java语言衔接 5)jdbc可以直接调用数据库存储过程 6)jdbc操作数据库的效率很高 7)学会了jdbc,什么数据库存取数据都会了 8)但是唯一的缺点就是不安全,因为你会把数据库的用户名和密码写入代码里,别人可以反编译便可以获取你的数据库信息,所以看你怎么衡量吧 3.连接数据库工具类的实现 1)在IDE(MyEclipse/eclipse)中建立项目 创建包com jdbc.bean(实体类包),com jdbc.dao(操作数据库的方法),com jdbc.main(实际操作方法),com jdbc.util(工具类包) 2)导入MySQL连接jar包到项目中(jar包下载地址:http://dev.mysql.com/downloads/file/?id=462850) 3)利用导入的jar包完成连接数据库的工具类 完成上述步骤的图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

4)connection对象的讲解和使用 在com jdbc.util包下,创建一个类BaseConnection,它的作用是连接数据库 ,写上以下代码

代码语言:javascript
复制
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);
     }
     
}

若连接成功则显示下图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

3.查询操作的机制和实现

1)在com jdbc.bean包下根据数据库的数据属性创建News.java和Newstype.java,代码分别如下 News.java代码

代码语言:javascript
复制
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;
	}
}

Newstype.java代码

代码语言:javascript
复制
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;
	}
	

}

2)在com jdbc.dao(操作数据库的方法)下分别创建NewsDAO.java(操作news表的操作)和NewsType.java(操作newstype表的操作),代码如下

NewsDAO.java

代码语言:javascript
复制
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中String sql=” select * from news, newstype” “where news.type =newsype.id”和ne.setName(rs.getString(”name”))再把News.java添加private String name;

出现如下图就表示成功

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

4.添加操作的机制与实现

只需在NewsDao.java添加方法,代码如下

代码语言:javascript
复制
 //该方法负责将传递过来的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();
			 }
	 }

再把public static void main(String[] args){ News ne=new News(); NewsDAO neda=new NewsDAO(); ne.setTitle(“成都温江环境好”); ne.setContent(“我还是得了肺癌”); ne.setType(2); neda.insert(ne); // ArrayList<News> ar= new NewsDAO().getList(); // for(News ne:ar){ // System.out.println(ne.getId()+” “+ne.getTitle()); // } } }改了

出现如下图就成功了

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

数据库也更新了如图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

上述也可以使用占位符,代码如图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

5.删除和修改操作的机制和实现

1)在NewsDAO.java文件下添加deleta方法,代码如下

代码语言:javascript
复制
    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();
			   }
		 }
	 }

调用该方法就可以删除操作,成功如下图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

2)在NewsDAO.java文件下添加update方法,代码如下

代码语言:javascript
复制
//本方法用于将传递过来的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();
			   }
		 }
		     
	 }

6.把这些方法串起来

在com.jdbc.main包下创建TestMain.java,代码如下

代码语言:javascript
复制
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;
    		}
    	}
    }
}

实现成功会出现下图

java通过JDBC连接数据库及增删改查操作
java通过JDBC连接数据库及增删改查操作

这就是JDBC连接任何数据库的方法,我会把代码传上来,不用积分就可以下载,希望大家多多支持我!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158717.html原文链接:https://javaforall.cn

=

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.实战数据库数据的准备
    • 创建数据库(newsmanager),然后创建表news(id,title,content,type)和newstype(id,name),其中news的type和newstype的id为主外键关系,如下图
    • 2.JDBC的介绍
      • 1)一种执行SQL语言的Java API 2)可以对所以主流数据库进行统一访问(access,MySQL,sql server,Oracle) 3)极大地减少了程序操作数据库的复杂性 4)jdbc使用面向对象的方式操作数据,能更好的和Java语言衔接 5)jdbc可以直接调用数据库存储过程 6)jdbc操作数据库的效率很高 7)学会了jdbc,什么数据库存取数据都会了 8)但是唯一的缺点就是不安全,因为你会把数据库的用户名和密码写入代码里,别人可以反编译便可以获取你的数据库信息,所以看你怎么衡量吧 3.连接数据库工具类的实现 1)在IDE(MyEclipse/eclipse)中建立项目 创建包com jdbc.bean(实体类包),com jdbc.dao(操作数据库的方法),com jdbc.main(实际操作方法),com jdbc.util(工具类包) 2)导入MySQL连接jar包到项目中(jar包下载地址:http://dev.mysql.com/downloads/file/?id=462850) 3)利用导入的jar包完成连接数据库的工具类 完成上述步骤的图
        • 4)connection对象的讲解和使用 在com jdbc.util包下,创建一个类BaseConnection,它的作用是连接数据库 ,写上以下代码
          • 若连接成功则显示下图
          • 3.查询操作的机制和实现
            • 1)在com jdbc.bean包下根据数据库的数据属性创建News.java和Newstype.java,代码分别如下 News.java代码
              • Newstype.java代码
                • 2)在com jdbc.dao(操作数据库的方法)下分别创建NewsDAO.java(操作news表的操作)和NewsType.java(操作newstype表的操作),代码如下
                  • NewsDAO.java
                    • 如果要链表查询只需把NewsDAO.java中String sql=” select * from news, newstype” “where news.type =newsype.id”和ne.setName(rs.getString(”name”))再把News.java添加private String name;
                      • 出现如下图就表示成功
                      • 4.添加操作的机制与实现
                        • 再把public static void main(String[] args){ News ne=new News(); NewsDAO neda=new NewsDAO(); ne.setTitle(“成都温江环境好”); ne.setContent(“我还是得了肺癌”); ne.setType(2); neda.insert(ne); // ArrayList<News> ar= new NewsDAO().getList(); // for(News ne:ar){ // System.out.println(ne.getId()+” “+ne.getTitle()); // } } }改了
                          • 出现如下图就成功了
                            • 数据库也更新了如图
                              • 上述也可以使用占位符,代码如图
                              • 5.删除和修改操作的机制和实现
                                • 调用该方法就可以删除操作,成功如下图
                                  • 2)在NewsDAO.java文件下添加update方法,代码如下
                                  • 6.把这些方法串起来
                                    • 实现成功会出现下图
                                    • 这就是JDBC连接任何数据库的方法,我会把代码传上来,不用积分就可以下载,希望大家多多支持我!
                                    相关产品与服务
                                    数据库
                                    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档