初学java,写了一个mysql类(增删改查)
来源:互联网 发布:最优化理论 课程 推荐 编辑:程序博客网 时间:2024/06/10 19:15
献上代码,总结:
<span style="font-size:18px;">public class MySQL {private String url="jdbc:mysql://127.0.0.1/test"; //连接的是test数据库private String user="root";private String password="199624";private String name="com.mysql.jdbc.Driver";private Connection conn=null;public MySQL(){}</span>url="jdbc:mysql://127.0.0.1/数据库名字";
name="com.mysql.jdbc.Driver";需要引入mysql的jar包
<span style="font-size:18px;">//连接数据库public void connSQL(){ try{System.out.println("连接中...");Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace(); //等待时间}try{Class.forName(name); //制定连接类型conn=DriverManager.getConnection(url,user,password); //获取连接if(!conn.isClosed()){System.out.println("数据库连接成功");}else{System.out.println("数据库已经连接");}}catch(ClassNotFoundException e){System.out.println("装置JDBC/OOBC 驱动程序失败");}catch(SQLException e){System.out.println("数据库连接失败");e.printStackTrace();}}</span>conn=DriverManager.getConnection(url,user,password);此处建立连接
<span style="font-size:18px;">//关闭数据库public void close(){try{if(conn!=null){conn.close(); //关闭数据库}}catch(SQLException e){System.out.println("无法关闭数据库");}try{System.out.println("数据库关闭中...");Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();e.printStackTrace();}}</span>
<span style="font-size:18px;">/判断数据库是否关闭public boolean getIsClose(){boolean flag = false;try{flag=conn.isClosed();}catch(SQLException e){System.out.println("无法判断连接状态");e.printStackTrace();}if(flag){return true;}else{return false;}}</span>Connection中的isClosed()方法能判断数据库的关闭状态,若处于关闭状态则返回true,反之则返回false
//显示数据public void showSQL(String sql){ //"SELECT * FROM (表名)"try{System.out.println("显示中...");Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}if(getIsClose()){System.out.println("数据库已经关闭,无法显示数据");}else{ResultSet rs=null;Statement stmt=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql); //执行if(!rs.next()){System.out.println("无数据"); return;} //rs.next:遍历一次do{String uName=rs.getString(1);String uId=rs.getString(2);String uSex=rs.getString(3);System.out.println(uName+"\t"+uId+"\t"+uSex);}while(rs.next());}catch(SQLException e){System.out.println("无法显示数据");e.printStackTrace();} }}rs=stmt.executeQuery(sql) //stmt.executeQuery(sql)表示执行sql语句,并返回结果集给rs
String uId=rs.getString(1);
String uName=rs.getString(2);
String uSex=rs.getString(3);
rs.getString(int)必须要根据表中列的顺序,如:列的顺序为name,id,sex,则rs.getString(1)表示name的值,rs.getString(2)表示id的值,rs.getString(3)表示sex的值
PS:结果集不为空时,rs.next()返回true,并且遍历了一次(第二次执行rs.next()的时候已经是下一组数据了)
这里说下PreparedStatement与Statement的区别(转载)
//查找数据(按姓名查找)public void seek(Student student){ <span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff;">//引入一个自定义的student类</span>PreparedStatement pre=null;ResultSet rs=null;String name=null;int id=0;int age=0;if(getIsClose()){System.out.println("数据库已经关闭,无法添加数据");}else{String sql="select * from students where name=?";try{System.out.println("查找中...");Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}try{pre=conn.prepareStatement(sql);pre.setString(1, student.getName());rs=pre.executeQuery(); //全部执行if(!rs.next()){System.out.println("数据不存在"); //可修改(姓名,学号)....return;} //rs.next()已经遍历了一次do{name=rs.getString(1);id=rs.getInt(2);age=rs.getInt(3);System.out.println(name+"\t"+id+"\t"+age);}while(rs.next());System.out.println("查找成功");}catch(SQLException e){System.out.println("查找失败");}}}
//添加数据 (需修改)public void insert(Student student){ //引入一个自定义的student类PreparedStatement pre=null;if(getIsClose()){System.out.println("数据库已经关闭,无法添加数据");}else{String sql="insert into students(name,id,age) values(?,?,?)";try{pre=conn.prepareStatement(sql);//while(true){pre.setString(1, student.getName());pre.setInt(2, student.getId());pre.setInt(3, student.getAge());pre.addBatch();pre.executeUpdate(); //运行// }System.out.println("添加成功");}catch(SQLException e){System.out.println("添加数据失败或数据已存在");e.printStackTrace();}}}pre.addBatch();表示JDBC批量更新
ps:这里转一下
JDBC 批量更新 pstmt.addBatch();的问题 在数据量越大的时候 越能体现 addBatch()的优势 因为数据库的处理速度是非常惊人的 单次吞吐量很大 执行效率极高 addBatch()把若干 sql 语句装载到一起,然后一次送到数据库执行,执行需要很 短的时间 而 pstmt.executeUpdate() 是一条一条发往数据库执行的 时间都消耗在数据 库连接的传输上面 举个例子可以帮助理解: 我这有一台超大功率的面粉加工机,前者相当于 把所有农户袋装的麦子收集起 来用卡车一次送往加工厂 后者相当于农户排好队用同样的卡车一人一人的往加 工厂送麦子 麦子加工 5 分钟完成,但是每个人到工厂就得 3 小时,我数据库执 行效率再高也没用,时间都耗在传输的路上了!! 这就出现了数据传输的性能瓶颈 addBatch 就是为解决这样的问题而产生的!
//修改数据(按姓名)public void updateSQL(Student student){ <span style="font-family: Arial;">//引入一个自定义的student类</span>int rs=0;if(getIsClose()){System.out.println("数据库已经关闭,无法修改数据");}else{try{System.out.println("修改中");Thread.sleep(1000);}catch(InterruptedException e){e.printStackTrace();}String sql="update students set name=? where name=?";PreparedStatement pre=null;try{pre=conn.prepareStatement(sql);pre.setString(1, student.getName1()); //修改后pre.setString(2, student.getName()); //修改前rs=pre.executeUpdate(); /if(rs==0){System.out.println("数据不存在");return;}System.out.println("修改成功");}catch(SQLException e){System.out.println("无法修改数据");e.printStackTrace();}}}
//删除数据(按姓名)public void deleteSQl(Student student){ //引入一个自定义的student类int rs=0;if(getIsClose()){System.out.println("数据库已经关闭,无法删除数据");}else{String sql="delete from students where name=?";PreparedStatement pre=null;try{pre=conn.prepareStatement(sql); pre.setString(1,student.getName());rs=pre.executeUpdate(); if(rs==0){System.out.println("数据不存在");return;}System.out.println("删除成功");}catch(SQLException e){System.out.println("无法删除数据");e.printStackTrace();}}}}
第一次写技术类博客,以前都是拜读各位大神的,若有写得不好的地方请指出,虚心求教
- 初学java,写了一个mysql类(增删改查)
- EntityFramework初学(增删改查)
- HBase初学-增删查改
- 自己写的一个CoreData的Demo,实现了增删改查。
- java操作mysql的增删改查
- java操作mysql的增删改查
- java操作mysql的增删改查
- java操作mysql增删改查
- 【完善】Java操作MySql增删改查
- java Mysql简单增删改查
- Java连接MySQL实现增删改查
- mysql增删改查
- MySQL增删改查
- MYSQL增删改查
- MySQL增删改查
- mysql增删改查
- MySQL---增删改查
- MySQL增删改查
- EularProject 36:2进制和10进制回文数
- CSS基础-7CSS样式-文本
- 【思维题】uva11300Spreading the Wealth
- Java使用Dom解析xml学习记录
- 编程语言的学习生涯 连载一北京校区53班赵凯
- 初学java,写了一个mysql类(增删改查)
- dropwizard metrics - 基本使用介绍
- JAVA中的接口和抽象类
- IOS 中 运行时 简单应用 扩展类添加属性 遍历成员变量
- mtk android 4.4 audio framework 代码分析(未完成)
- Android 平台上的 ARP 和 ARP欺骗
- 安装和升级--基础--许可证信息--前言
- 《机器学习实战》(二)k-近邻算法(KNN)
- Bootstrap组件之输入框组