java通过JDBC连接数据库及增删改查操作
2016-08-09 15:41
1101 查看
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,它的作用是连接数据库 ,写上以下代码
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); } }
若连接成功则显示下图
3.查询操作的机制和实现
1)在com jdbc.bean包下根据数据库的数据属性创建News.java和Newstype.java,代码分别如下
News.java代码
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代码
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
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;
出现如下图就表示成功
4.添加操作的机制与实现
只需在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(); } }
再把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.删除和修改操作的机制和实现
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(); } } }
调用该方法就可以删除操作,成功如下图
2)在NewsDAO.java文件下添加update方法,代码如下
//本方法用于将传递过来的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,代码如下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;
}
}
}
}
实现成功会出现下图
这就是JDBC连接任何数据库的方法,我会把代码传上来,不用积分就可以下载,希望大家多多支持我!
相关文章推荐
- Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作
- JdbcHelper.java(JAVA连接数据库后的备忘录的增删改查)
- java通过jdbc连接数据库并在前端实现增删查改
- JDBC连接数据库及增删改查操作
- 编写操作数据库的JAVA程序时需要的连接MySQL数据库的JDBC连接包mysql-connector-java-5.1.10.zip怎么安装
- JAVA采用JDBC连接操作数据库详解
- Java数据库编程---JDBC操作步骤及数据库连接操作
- C#通过窗体应用程序操作数据库(增删改查)
- java 通过jdbc驱动连接hive操作实例
- JDBC 实例--JDBC通过工具类DBUtil连接到数据库,让我们不再恐惧操作数据库
- 基于Java对象的数据库增删改查操作
- JDBC连接数据库,对数据库进行增删查改操作
- Java通过jedis操作redis(增删改查)
- 通过代理类实现java连接数据库(使用dao层操作数据)实例分享
- [Java] JDBC 01 初步 , java 连接 数据库的基本六步操作
- java之 jdbc连接数据库与操作excel文件代码
- java 通过jdbc驱动连接hive操作
- 【SQL】JDBC之与数据库MySQL的连接以及增删改查等操作
- web项目中,Java Resoures连接数据库测试通过,但JSP页面连接操作数据库失败的解决方案
- 通过java的jdbc连接数据库