`
lolocomee
  • 浏览: 16320 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

增删改

阅读更多
package com.commom;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

import com.commom.ReadXml;

public class BaseDao {

    public Connection conn =null;//连接变量
    public ResultSet rs=null;//数据集
    public PreparedStatement pstmt=null;//预处理
   
    //打开连接
    public void openConnection(){
    if(conn==null){
    try{
    Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection(new ReadXml().Constring());
System.out.println("连接成功");
    }
    catch(SQLException ex){
     System.out.println(ex.getMessage()+"路径错误");
     }
catch(ClassNotFoundException ex){
     System.out.println(ex.getMessage()+"驱动错误");
}
finally{
}
    }
    }
    //关闭连接释放资源
    public void dispose(){
    try {
if(rs!=null)rs.close();
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
System.out.println("关闭成功");
}
catch (SQLException e) {
e.printStackTrace();
}
    }

   /*
    * 添加
   */  
    public int Insert(String tablename,Map map) throws Exception{
    String[] s=this.getInsert(map);
    String sqlstr="Insert into "+tablename+" ("+s[0]+")values("+s[1]+")";
    System.out.println(sqlstr);
    return ExecuteNonQuery(sqlstr);
    }
      /*
    * 修改
   */
    public void Update(String tablename,Map map,String where) throws Exception{
    String sqlstr="UPDATE "+tablename+" set "+getUpdate(map)+" WHERE "+where;
    this.ExecuteNonQuery(sqlstr);
    }
      /*
    * 删除
   */
    public boolean Delete(String tablename,String where) throws Exception{
    String sqlstr="DELETE FROM "+tablename+" WHERE "+where;
    return ExecuteNonQuery(sqlstr)>0? true:false;
    }

    /*
     * Update语句
     */
    private String getUpdate(Map map){
    int i=map.size();
    String s="";
    if(i>0){
    Iterator iter=map.keySet().iterator();
    while(iter.hasNext()){
    Object key=iter.next();
    if(i>1){
         s+=key.toString()+"="+this.getvalue(map.get(key))+",";
         i--;
         }else{
        s+=key.toString()+"="+this.getvalue(map.get(key));
         }
    }
    }
    return s;
    }
   
    /*
     * 添加语句
     */
    private String[] getInsert(Map map){
    int i=map.size();
    String s1="";
    String s2="";
    if(i>0){
    Iterator iter=map.keySet().iterator();
    while(iter.hasNext()){
    Object key=iter.next();
    if(i>1){
         s1+=key.toString()+",";
         s2+=this.getvalue(map.get(key))+",";
         i--;
         }else{
        s1+=key.toString();
        s2+=this.getvalue(map.get(key));
         }
    }
    }
    String[] s=new String[]{s1,s2};
    return s;
    }
   
    /*
     * 传入object返回所需string,判断类型形成语句
     */
    private String getvalue(Object o){
    //System.out.println(o);
    if (o instanceof Integer) {
            return o.toString();
        } else if (o instanceof String) {
            String s = (String) o;
            s=this.sql_inj(s);
            return "'"+s+"'";
        } else if (o instanceof Double) {
        return o.toString();
        }else if (o instanceof Short) {
        return o.toString();
        }
        else{
        return "''";
        }
    }
     /*
      * 过滤防注入
      */
    public String sql_inj(String s){
    String key="select|update|delete|count|*|sum|master|script|'|declare|or|execute|alter|statement|executeQuery|count|executeUpdate";
    String f[] = key.split("|");
    for(int i=0; i<f.length;i++) {
    s.replace(f[i], "");
    }
    return s;
    }
   
    /** 
     * 用于执行语句(eg:insert语句,update语句,delete语句) 
     *  
     * @param String 
     *            sqlstr,SQL语句 
     * @param sqlParameter[] 
     *            parms,参数集合 
     * @return int,SQL语句影响的行数 
    */ 
    public int ExecuteNonQuery(String sqlstr)  
    throws Exception {      
        try {  
             this.openConnection();
            pstmt = conn.prepareStatement(sqlstr); 
            System.out.println(pstmt.toString());
            int i=pstmt.executeUpdate(); 
            rs= pstmt.getGeneratedKeys();
            if ( rs != null && rs.next() )
            {
            return rs.getInt(1);
            }else{
            return i;
            }
        } catch (Exception e) {  
            throw new Exception("executeNonQuery方法出错:" + e.getMessage());  
        } finally {  
        this.dispose();
        }  
    }        
}
分享到:
评论

相关推荐

    实验训练3 数据增删改操作

    实验训练 3 数据增删改操作 本实验的主要目的是通过实践操作,掌握 MySQL 中的数据增删改操作,包括单记录插入、批量插入、删除、修改等操作。实验内容包括三个部分:插入数据、删除数据和修改数据。 实验 3-1 ...

    jquery写的增删改

    标题"jquery写的增删改"指的是使用 jQuery 实现的数据表或列表的动态操作,即添加(Add)、删除(Delete)和修改(Modify)功能。这些功能在网页应用中十分常见,特别是在处理用户交互和数据管理时。 jQuery 提供了...

    国家开放大学 MySQL数据库应用 实验训练3 数据增删改操作

    MySQL数据库应用实验训练3 数据增删改操作 MySQL数据库应用实验训练3 数据增删改操作是国家开放大学提供的实验训练,旨在让学生熟悉 MySQL 数据库的基本操作,包括数据的增删改操作。实验中,学生将学习使用 Insert...

    django入门-增删改实例

    这个入门实例将引导我们了解如何利用Django进行用户信息的增删改操作,这也是Web应用中常见的功能需求。下面,我们将详细探讨这个主题。 首先,我们需要了解Django的基本结构。一个Django项目通常由多个应用程序...

    自己整理的实例增删改

    【标题】"自己整理的实例增删改"指的是个人整理的一系列关于数据库操作或编程实践中的增、删、改操作实例。在IT行业中,增、删、改是数据操作的基本要素,通常涉及到数据库管理和编程语言的数据处理部分。 【描述】...

    easyui增删改很好的例子

    这个“easyui增删改很好的例子”是一个实用的学习资源,展示了如何利用EasyUI来实现数据的添加、删除和修改功能。在产品管理和产品分类管理两个子模块中,我们可以看到这些操作的实现,这对于理解和掌握EasyUI的数据...

    htmljavascript增删改

    JavaScript还可以与服务器进行通信,利用Ajax(Asynchronous JavaScript and XML)技术实现数据的增删改。通过XMLHttpRequest或现代浏览器的fetch API,可以发送HTTP请求到服务器,更新数据库,并获取最新的数据。...

    table增删改操作

    table表格的增删改功能,鼠标左键双击可编辑,下方按钮增加,右侧删除,表格数据计入localstorage,不会因刷新而消失

    GridControl增删改查到数据库

    "GridControl增删改查到数据库"这个主题聚焦于如何利用UI组件GridControl与LINQ to SQL技术来实现对数据库数据的CRUD(Create, Read, Update, Delete)操作。下面将详细解释相关知识点。 首先,GridControl是一种...

    WPF 使用MVVM设计模式对进行增删改操作

    本主题主要关注如何在WPF项目中运用MVVM模式来实现数据的增删改操作,这对于理解和提升软件开发效率至关重要。 MVVM模式是一种将业务逻辑、用户界面和数据模型分离的设计思想。它由三个主要部分组成: 1. **Model...

    element-ui tree结构实现增删改自定义功能代码

    在本文中,我们将深入探讨如何使用Element-UI的Tree组件实现增删改的自定义功能。Element-UI是一个基于Vue.js的开源UI组件库,它提供了丰富的组件供开发者使用,其中包括Tree组件,用于展示层级关系的数据。在描述的...

    EF 多对多关系 增删改应用实例

    ### EF 多对多关系 增删改应用实例解析 在实体框架(Entity Framework,简称EF)中处理多对多关系是常见的需求之一,尤其是在数据模型设计中涉及到多个实体间复杂关联的情况下。本文将详细解析如何在EF中实现多对多...

    html+css+js表格动态增删改与xml加载与保存

    通过动态添加或删除这些元素,我们可以实现表格内容的增删改。 CSS(Cascading Style Sheets)则负责美化页面,使表格看起来更加立体和吸引人。我们可以使用CSS选择器来定位特定的表格元素,然后设置边框、背景色、...

    js表格table的增删改

    为了让表格的增删改功能更加完整,我们需要实现以下细节: 1. **编辑功能完善**:除了检查是否选择了行之外,还需要实现让用户能够编辑选定行的功能。这可以通过显示/隐藏编辑表单或使用原位编辑等方式实现。 2. **...

    QTreeView控件实现节点的增删改并保存入库

    在本文中,我们将深入探讨如何使用Qt库中的QTreeView控件来实现数据的增删改操作,并将其保存到数据库中。QTreeView是一个强大的组件,它允许用户以树形结构显示数据,非常适合组织层次化信息。在这个项目中,我们...

    mvc ajax 增删改

    本压缩包文件提供了基于`Mvc`(即ASP.NET MVC)和`Ajax`实现的增删改功能示例,便于开发者快速理解和应用。 **MVC架构** MVC是一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...

    c#Form窗体增删改操作

    本教程将深入探讨如何在C#窗体模式下使用封装的方式对表格内容进行增删改操作,这对于初学者来说是一份很好的学习资源。教程中包含了一个数据库文件和详细的使用说明,确保你可以顺利地理解和应用这些概念。 首先,...

    用于增删改除的代码

    增删改除代码

    ASP增删改插-完整版.zip

    本文将详细解析"ASP增删改插-完整版.zip"中的核心知识点,包括ASP的基础概念、增删改查操作的实现以及在实际应用中的实践。 一、ASP基础 ASP是构建Web应用程序的一种技术,它允许开发者使用HTML、VBScript或...

    简单是mvc增删改程序

    本项目“简单是mvc增删改程序”显然旨在为初学者提供一个基础的教程,帮助他们理解和掌握如何在ASP.NET MVC环境中进行数据操作,如添加、删除和修改记录。以下是关于这个主题的详细知识解释: 1. **ASP.NET MVC架构...

Global site tag (gtag.js) - Google Analytics