计科1501韩猛实验8

(一)学习总结

1.用思维导图对本周的学习内容进行总结。

1080029-20170518162515619-522998003.png

2.通过实验内容中的具体实例说明在执行executeUpdate()方法和executeQuery()方法中使用动态参数时,为什么要使用PreparedStatement接口而不使用Statement,比较使用两种接口的不同之处。 


JDBC中Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。

 Statement(接口)
 |
 PreparedStatement(接口)
 |
 CallableStatement(接口)
 Statement:(用于执行不带参数的简单 SQL 语句)
 每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.
 例:

 String sql = "select seq_orderdetid.nextval as orderidfrom dual";
 Statement stat1=conn.createStatement();
 ResultSet rs1 = stat1.executeQuery(sql);
 if ( rs1.next() ) {
 id = rs1.getLong(1);
}
PreparedStatement:(用于执行带或不带 IN 参数的预编译SQL 语句)
执行的SQL语句中是可以带参数的,并支持批量执行SQL。由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来。
例:
  PreparedStatement pstmt  = con.prepareStatement("UPDATE EMPLOYEES  SET SALARY = ? WHERE ID =?");
for(int i =0;i<length;i++){
    pstmt.setBigDecimal(1, param1[i]);
    pstmt.setInt(2, param2[i]);
    pstmt.addBatch();
}
pstmt. executeBatch();
CallableStatement :(用于执行对数据库已存储过程的调用)


(二)实验总结

实验内容:
使用JDBC实现实验七的宠物商店
完成实验内容,代码上传到码云,注意,务必将创建数据库的脚本文件随项目文件一起上传,在随笔中分析程序设计思路,用PowerDesigner画出类图结构,并对完成实验内容过程中遇到的问题、解决方案和思考等进行归纳总结,注意代码中必须有必要的注释。

 1)首先应该有主函数应用程序,以开头,是一切程序的前提
 import test.WelcomeFrame;
 public class MainApp {
/**
 * 项目运行
 */
 public static void main(String[] args) {
new WelcomeFrame().setVisible(true);
}
}

(2)初始化数据,将用户界面所需数据储存,初始化数据,初始化窗口信息
 import java.util.ArrayList;
 import keke.Pet;
/**
* 存储数据
*/
public class DataBase {
public static ArrayList<Pet> data = new ArrayList<Pet>();
//初始数据
 static{
data.add(new 
(3)当然要添加管理员访问类,从而对初  始化后的程序进行获取,添加,删除等操作
import java.util.ArrayList;
import data.DataBase;
 import keke.Pet;
/**
 *  管理员数据访问类
 */
 public class AdminDao {
//获取所有数据
public ArrayList<Pet> queryAllData(){
return DataBase.data;
}
//添加数据
public void addPet(Pet pet){
DataBase.data.add(pet);
}
//删除数据
 public void delPet(String delNo){
for(int i = 0; i < DataBase.data.size();i++){
    Pet thisPet = DataBase.data.get(i);
    if(thisPet.getNo().equalsIgnoreCase(delNo)){
        DataBase.data.remove(i);
    }
}
}   
} 

(4)定义初始化的数据
 package keke;
 public class Pet {
 private String No;
 private String Name;
 private String Number;
 private String Age;
 private Double Cost;
 public Pet() {      
 }
 
public String toString(){ 
return "宠物的编号为:"+this.No+"宠物的名称为:"+this.Name+"宠物的年龄为:"+this.Age+"宠物的数量为:"+this.Number+"宠物的价格为:"+this.Cost;
}
}

 (5)定义服务类,对界面中添加 删除 修改等应用进行写算法定义

public class AdminService {
private AdminDao adminDao = new AdminDao();
//查询服务
public ArrayList<Pet> queryPet(){
//调用Dao层的方法获取所有数据
ArrayList<Pet> data = adminDao.queryAllData();
return data;        
}
 //添加服务
 public boolean addPet(String no,String name,String age,String number,String cost){
  ArrayList<Pet> data = queryPet();
  Iterator<Pet> iterator = data.iterator();
 while(iterator.hasNext()){
    Pet pet = iterator.next();
    //如果存在重复编号则添加不成功 
    if(pet.getNo().equals(no)){
        return false;
    }           
}
Pet thisPet = new Pet(no,name,age,number,Double.parseDouble(cost));
adminDao.addPet(thisPet);  //添加成功
return true;
 }
 //修改服务
 public boolean updatePet(String no,String name,String age,String number,String cost){
 ArrayList<Pet> data = queryPet();
for(int i = 0; i < data.size();i++){
    Pet pet = data.get(i);
    if(pet.getNo().equals(no)){
        adminDao.delPet(no);
        Pet thisPet = new Pet(no,name,age,number,Double.parseDouble(cost));
        adminDao.addPet(thisPet);
        return true;
    }           
}
return false;
}
 //删除服务
 public boolean delPet(String no){
 ArrayList<Pet> data = queryPet();
 for(int i = 0; i < data.size();i++){
    Pet pet = data.get(i);
    if(pet.getNo().equals(no)){
        adminDao.delPet(no);                
        return true;
    }           
}
return false;
}
}

(6)书写test类 ,构造所需方法

 public AdminDialog(Frame owner,boolean modal){
super(owner,modal);
this.init();            //初始化
this.addComponent();    //添加组件
this.addListener();     //添加监听器
queryPet();       //创建对象时显示数据
 }

添加监听器,当需要调用应用包的时候会自动调用运行

声明
 import java.awt.Frame;
  import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import javax.swing.JButton;
 import javax.swing.JDialog;
  import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableModel;
 import service.AdminService;
 import tools.GUITools;
 import keke.Pet;
  (7)数据库连接应用
    * 获取连接对象
 */
public static Connection getConnection(int connection_type)throws Exception
{
    switch (connection_type)
    {
        case CONNECTION_SQL:
            return getConnectionSQL();
        case CONNECTION_MYSQL:
            return getConnectionMYSQL();
    }
    return null;
}

/*
 * 连接SQLSERVER数据库
 */ 
private static Connection getConnectionSQL() throws Exception
{
    Connection conn=null;
    final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    final String DBURL = "jdbc:sqlserver://localhost:1433;databaseName=宠物商店";
    final String DBUSER = "wangyikai";
    final String DBPASS = "wwwyyykkk";
    try
    {
        Class.forName(DBDRIVER);        
        conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);          
    }
    catch(Exception e)
    {
        e.printStackTrace();
        throw e;
    }
    return conn;
}
/*
 * 连接MYSQL数据库
 */
private static Connection getConnectionMYSQL() throws Exception
{
    final String DBDRIVER = "com.mysql.jdbc.Driver";
    final String DBURL = "jdbc:mysql://localhost:3306/宠物商店";
    final String DBUSER = "wangyikai";
    final String DBPASS = "wwwyyykkk";
    Connection conn=null;
    
    try
    {
        Class.forName(DBDRIVER);            
        conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);          
    }
    catch(Exception e)
    {
        e.printStackTrace();
        throw e;
    }
    return conn;
}
/**
 * 关闭连接对象
 */
public static void close(Connection conn) throws Exception
{
    if(conn!=null)
    {
        try
        {
            conn.close();
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            throw e;
        }


 3.码云托管

1080029-20170518162603447-24790609.png

 地址:git@git.oschina.net:qq2546914025/jike1501hanmengshiyan8.git

转载于:https://www.cnblogs.com/hm2546914025-/p/6874059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值