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 数据增删改操作 本实验的主要目的是通过实践操作,掌握 MySQL 中的数据增删改操作,包括单记录插入、批量插入、删除、修改等操作。实验内容包括三个部分:插入数据、删除数据和修改数据。 实验 3-1 ...
标题"jquery写的增删改"指的是使用 jQuery 实现的数据表或列表的动态操作,即添加(Add)、删除(Delete)和修改(Modify)功能。这些功能在网页应用中十分常见,特别是在处理用户交互和数据管理时。 jQuery 提供了...
MySQL数据库应用实验训练3 数据增删改操作 MySQL数据库应用实验训练3 数据增删改操作是国家开放大学提供的实验训练,旨在让学生熟悉 MySQL 数据库的基本操作,包括数据的增删改操作。实验中,学生将学习使用 Insert...
这个入门实例将引导我们了解如何利用Django进行用户信息的增删改操作,这也是Web应用中常见的功能需求。下面,我们将详细探讨这个主题。 首先,我们需要了解Django的基本结构。一个Django项目通常由多个应用程序...
【标题】"自己整理的实例增删改"指的是个人整理的一系列关于数据库操作或编程实践中的增、删、改操作实例。在IT行业中,增、删、改是数据操作的基本要素,通常涉及到数据库管理和编程语言的数据处理部分。 【描述】...
这个“easyui增删改很好的例子”是一个实用的学习资源,展示了如何利用EasyUI来实现数据的添加、删除和修改功能。在产品管理和产品分类管理两个子模块中,我们可以看到这些操作的实现,这对于理解和掌握EasyUI的数据...
JavaScript还可以与服务器进行通信,利用Ajax(Asynchronous JavaScript and XML)技术实现数据的增删改。通过XMLHttpRequest或现代浏览器的fetch API,可以发送HTTP请求到服务器,更新数据库,并获取最新的数据。...
table表格的增删改功能,鼠标左键双击可编辑,下方按钮增加,右侧删除,表格数据计入localstorage,不会因刷新而消失
"GridControl增删改查到数据库"这个主题聚焦于如何利用UI组件GridControl与LINQ to SQL技术来实现对数据库数据的CRUD(Create, Read, Update, Delete)操作。下面将详细解释相关知识点。 首先,GridControl是一种...
本主题主要关注如何在WPF项目中运用MVVM模式来实现数据的增删改操作,这对于理解和提升软件开发效率至关重要。 MVVM模式是一种将业务逻辑、用户界面和数据模型分离的设计思想。它由三个主要部分组成: 1. **Model...
通过动态添加或删除这些元素,我们可以实现表格内容的增删改。 CSS(Cascading Style Sheets)则负责美化页面,使表格看起来更加立体和吸引人。我们可以使用CSS选择器来定位特定的表格元素,然后设置边框、背景色、...
为了让表格的增删改功能更加完整,我们需要实现以下细节: 1. **编辑功能完善**:除了检查是否选择了行之外,还需要实现让用户能够编辑选定行的功能。这可以通过显示/隐藏编辑表单或使用原位编辑等方式实现。 2. **...
在本文中,我们将深入探讨如何使用Qt库中的QTreeView控件来实现数据的增删改操作,并将其保存到数据库中。QTreeView是一个强大的组件,它允许用户以树形结构显示数据,非常适合组织层次化信息。在这个项目中,我们...
在本文中,我们将深入探讨如何使用Element-UI的Tree组件实现增删改的自定义功能。Element-UI是一个基于Vue.js的开源UI组件库,它提供了丰富的组件供开发者使用,其中包括Tree组件,用于展示层级关系的数据。在描述的...
本压缩包文件提供了基于`Mvc`(即ASP.NET MVC)和`Ajax`实现的增删改功能示例,便于开发者快速理解和应用。 **MVC架构** MVC是一种设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器...
本教程将深入探讨如何在C#窗体模式下使用封装的方式对表格内容进行增删改操作,这对于初学者来说是一份很好的学习资源。教程中包含了一个数据库文件和详细的使用说明,确保你可以顺利地理解和应用这些概念。 首先,...
增删改除代码
本文将详细解析"ASP增删改插-完整版.zip"中的核心知识点,包括ASP的基础概念、增删改查操作的实现以及在实际应用中的实践。 一、ASP基础 ASP是构建Web应用程序的一种技术,它允许开发者使用HTML、VBScript或...
本项目“简单是mvc增删改程序”显然旨在为初学者提供一个基础的教程,帮助他们理解和掌握如何在ASP.NET MVC环境中进行数据操作,如添加、删除和修改记录。以下是关于这个主题的详细知识解释: 1. **ASP.NET MVC架构...
在本文中,我们将深入探讨如何使用Vue.js的基础语句来实现学生管理系统的增删改功能,并结合实时日志记录学生信息的变化。Vue.js是一个流行的前端JavaScript框架,它提供了声明式的数据绑定和组件化的能力,使得构建...