Java获取数据库表 字段 存储的部分数据

在浏览器页面,选中图片(可多选) 》单击删除按钮。

重点是, 本数据库表TabHeBeiTianQi中 存在 同一id,对应的picLocalPath字段  存储了多张图片,图片地址用   逗号隔开

HeBeiTianQi.jsp页面

<head>

<link href="static/bootstrap-3.3.5-dist/css/bootstrap.css" rel="stylesheet" />

</head>

<body>
    <span hidden="hidden" id="inputRealNameVal" type="text"  value="${sessionScope.loginUser.realName}" ></span><!-- 获取后台登录名 -->
    <input type="hidden" id="inputRealNameVal" value="${sessionScope.loginUser.realName}"><!-- 获取后台登录名 -->
    <button id="btn_delete" type="button" class="btn btn-default"  style="display: none" state="1">
        <span class="glyphicon glyphicon-ok" aria-hidden="true" ></span>删除
    </button> 

    <!-- 删除弹窗 -->    
    <div class="modal fade" id="mdl_deleteConfirm">
        <div class="modal-dialog" style="width:350px">
            <div class="modal-content" style="border-radius:0px">
                <div class="modal-header" style="background:#1a3d5c;padding:7px;">
                    <button type="button" class="close" data-dismiss="modal"
                        aria-label="Close" style="color:#fff">×</button>
                    <h4 class="modal-title" style="font-size:14px;color:#fff;">河北天气删除 </h4>
                </div>
                <div class="modal-body" style="height:50px;">
                    <div style="display:inline-block;width:100%">
                        <label style="float:left;margin-right:5px">鉴定人</label>
                        <input type="text" id="UserName2" style="width:146px" value='${sessionScope.loginUser.realName}' >
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" id="btn_deleteConfirm" class="btn btn-primary">确认</button>
                    <a href="#" class="btn btn-primary" data-dismiss="modal">关闭</a>
                </div>
            </div>
        </div>
    </div>

<script src="static/js/jquery-1.10.1.min.js"></script>

<script src="static/bootstrap-3.3.5-dist/js/bootstrap.js"></script>

<script src="static/bootstrap3-dialog/js/bootstrap-dialog.min.js"></script>

<script src="static/js/HeBeiTianQi.js"></script>

</body>

 BeiTianQi.js文件

$(function(){   

    //方式1.1 删除选中的图片
    $("#btn_delete").click(function(){
        if (totalCheckId.length == 0) {
            layer.alert('请先选择!', {icon: 0});
            return;
        }    
        $('#mdl_deleteConfirm').modal({
            show : true,
            backdrop : 'static'
        }); 
    });
  
    //方式1.2 删除  手动填写删除鉴定人员
    $("#btn_deleteConfirm").click(function(){
        var user = document.getElementById("UserName2").value;//删除人
        if(user==''||user==undefined){
            layer.alert('请填写删除鉴定人员姓名!', {icon: 0});
            return;
        }        
        var id = totalCheckId.substr(0,totalCheckId.length-1);
        var idArr=id.split(",");        
        var idStr=idArr.join("','");
        var idParam="("+"'"+idStr+"'"+")";
        var thisPicLocalPathArr=getCheckedImgObjIdAndUrl();
        var thisPicLocalPathStr = JSON.stringify(thisPicLocalPathArr);
        $.ajax({  
            url: 'HeBeiTianQi/HeBeiTianQiDelete.data',
            type:'post',
            dataType:'json',
            //参数:所有选中图片ID,所有选中图片url
            data:{                  
                idParam: idParam,
                thisPicLocalPathStr:thisPicLocalPathStr,
                authenticatePeople: $("#UserName2").val()
            },             
            success:function(backResult) {
                $('#mdl_deleteConfirm').modal('hide');
                layer.alert(backResult.msg, {icon: 0});
                reqHeBeiTianQiList(CurrentPageHeBeiTianQi);
            }
        });    
        document.getElementById("allSelect").checked = false;
        $("#btn_cancel").click();
    });

    //方式2.1删除选中的图片,方式2.2填写 "自动获取到的 登录名"
    $("#btn_delete").click(function(){
        if (totalCheckId.length == 0) {
            layer.alert('请先选择!', {icon: 0});
            return;
        }    
        layer.prompt({title: '请填写筛选人员姓名',value:$("#inputRealNameVal").attr("value")},function(val, index){
            if(val==''||val==undefined){
                layer.alert('筛选人员姓名不能为空!', {icon: 0});
                return;
            }        
            var id = totalCheckId.substr(0,totalCheckId.length-1);
            //var idArr=id.split(",");        
            var thisPicLocalPathArr=getCheckedImgObjIdAndUrl();
            var thisPicLocalPathStr = JSON.stringify(thisPicLocalPathArr);
            $.ajax({  
                url: 'HeBeiTianQi/HeBeiTianQiDelete.data',
                type:'post',
                dataType:'json',
                //参数:所有选中图片ID,所有选中图片url
                data:{                  
                    idParam: id,
                    thisPicLocalPathStr:thisPicLocalPathStr,
                    authenticatePeople: $("#UserName2").val()
                },             
                success:function(backResult) {
                    layer.alert(backResult.msg, {icon: 0});
                    reqHeBeiTianQiList(CurrentPageHeBeiTianQi);
                }
            });    
            document.getElementById("allSelect").checked = false;
            $("#btn_cancel").click();
            layer.close(index);
        });
    });
})

     /**
     * 获取选中图片的id 和 url,返回数组对象[{id:idVal,url:urlVal}];可通过JSON.stringify(res),将返回结果转化为字符串
     * @returns {Array}
     */
    function getCheckedImgObjIdAndUrl(){
        var checkImgUrl=[];
        $(".row li .graphic-collection").each(function(index,element){
            var isCheck =$(element).find(".ticker").is(":hidden");
            if(!isCheck){
                var obj={};
                var idVal=$(element).find("input[name='iid']").val();
                var url=$(element).find("a img").attr("src");
                var fileServicePath=G.fileServicePath;
                obj.id=idVal;
                obj.url=url.substring(fileServicePath.length);
                checkImgUrl.push(obj);
            }            
        });
        return checkImgUrl;
    }

HeBeiTianQiController.java

public class HeBeiTianQiController {     
    @Autowired
    private HeBeiTianQiService heBeiTianQiService;

     /**
     * 河北天气删除
     * @param idParam 删除图片的id,多个用,隔开
     * @param thisPicLocalPathStr 图片路径,举例数据格式为[{"id":"429","url":"54.jpg"},{"id":"426","url":"23.jpg"}]
     * @param authenticatePeople 筛选人员姓名
     * @return
     */
    @RequestMapping("/HeBeiTianQiDelete.data")
    @ResponseBody
    public String HeBeiTianQiDelete(String idParam,String thisPicLocalPathStr,String  authenticatePeople) {
        String backResult= heBeiTianQiService.HeBeiTianQiDelete(idParam,thisPicLocalPathStr,authenticatePeople);
        return backResult;
    }
}

HeBeiTianQiService .java

public interface HeBeiTianQiService {

    String HeBeiTianQiDelete(String IdParam,String ThisPicLocalPathStr,String AuthenticatePeople);

}

 HeBeiTianQiServiceImpl .java

@Service
public class HeBeiTianQiServiceImpl extends BaseService implements HeBeiTianQiService{
    @Autowired HeBeiTianQiDaoImpl heBeiTianQiDaoImpl;

    //删除选中图片
    @Override
    public String HeBeiTianQiDelete(String IdParam,String ThisPicLocalPathStr,String AuthenticatePeople) {
        int[] success =  heBeiTianQiDaoImpl.HeBeiTianQiDelete(IdParam,ThisPicLocalPathStr,AuthenticatePeople);
        if(success == null){
            return BackMsgDTO.errorMsg("您未选中要删除的图片").toString();
        }
        if(success[2] > 0){
            return BackMsgDTO.okMsg(success[1] + "张图片删除成功!" + success[2] + "张图片删除失败!").toString();
        }else{
            return BackMsgDTO.okMsg(success[1] + "张图片删除成功!").toString();
        }
    }
}

HeBeiTianQiDaoImpl.java

     /**
     * 河北天气删除 选中图片
     */
    public int[] HeBeiTianQiDelete(String IdParam, String ThisPicLocalPathStr,String AuthenticatePeople) {    
        if(StringUtil.isEmpty(IdParam)){
            return null;
        }
        String sql = "select id,picLocalPath from TabHeBeiTianQi where id in ("+IdParam+")";
        String picLocalPathStr=this.getJsonStrBySql(sql);
        int[] result=new int[3];//定义一个长度为3的int型数组
        int sucessCount=0;
        int falseCount=0;
        int oneResult=0;
        try {
            JSONArray jsonArray = new JSONArray(picLocalPathStr);
            JSONArray thisJsonArray = new JSONArray(ThisPicLocalPathStr);        
            for(int i=0 ; i < jsonArray.length()  ;i++){    
                //将json数组转换成json对象
                JSONObject jsonObject = jsonArray.getJSONObject(i);//JSONObject jsonObject = (JSONObject) jsonArray.get(i);        
                String idVal = jsonObject.getString("id");//id这里是列名称,获取json对象中列名为id的值
                String    picLocalPathVal = jsonObject.getString("picLocalPath");
                String[] picLocalPathValArr = picLocalPathVal.split(",");            
                String  ResultPicLocalPathValStr = null ;
                List<String> oneList = Arrays.asList(picLocalPathValArr);// 将数组转换为list集合
                List<String> arrayList = new ArrayList<String>(oneList);// 转换为ArrayLsit调用相关的remove方法
                for(int j=0 ; j < thisJsonArray.length()  ;j++){
                    JSONObject    thisJsonObject = thisJsonArray.getJSONObject(j);    
                    String    thisIdVal = thisJsonObject.getString("id");
                    String    thisPicLocalPathVal = thisJsonObject.getString("url");    //实际获取的字符串中只有1个url                                
                    //String[] thisPicLocalPathValArr = thisPicLocalPathVal.split(",");// 不需要分割 ,因为实际传来字符串中只有1个url                    
                    if(thisIdVal.equals(idVal)){//    这里不能用idVal==thisIdVal    ,因为会根据id清空    
                        arrayList.remove(thisPicLocalPathVal);
                        /*for(int m=0;m<thisPicLocalPathValArr.length;m++){
                            arrayList.remove(thisPicLocalPathValArr[m]);
                        }*/ 
                        // 控制台输出演示----  数组列表
                        /*for (String str1 : arrayList) {
                            System.out.println(str1 + ",");                            
                        }*/
                        // ArrayList转成String数组["","",""]    
                        String[] array = arrayList.toArray(new String[0]);
                        /*for (int n = 0; n < array.length; n++) {
                            System.out.println("array--> " + array[n]);
                        }*/
                        // 方式一将String数组["","",""]转换成String",,"
                        ResultPicLocalPathValStr= StringUtil.formatStringArrToString(array);
                        // 方式二将String数组["","",""]转换成String"[,,]"
                        //ResultPicLocalPathValStr = Arrays.toString(array);                        
                        // String格式转换:将String"[,,]"转换成String",,"   
                        //参考 https://zhidao.baidu.com/question/136765761398462045.html
                        //将字符串转换成json对象
                        /*JSONObject ResultPicLocalPathVal=new JSONObject();
                        ResultPicLocalPathVal.put("picLocalPath", ResultPicLocalPathValStr);*/
                        StringBuffer sqlDelete = new StringBuffer();
                        String nowDate = TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss");
                        sqlDelete.append("update TabHeBeiTianQi set picLocalPath= ?,AuthenticateDate = ?,AuthenticatePeople=? where ID = ?");
                        oneResult= this.executeBySql(sqlDelete.toString(),new Object[]{ResultPicLocalPathValStr,nowDate,AuthenticatePeople,idVal});
                        if (oneResult>0){
                            sucessCount=sucessCount+oneResult;//执行成功个数
                        }else{
                            falseCount=thisJsonArray.length()-sucessCount;
                        }
                    }    
                }
            }            
            result[0]=oneResult;
            result[1]=sucessCount;
            result[2]=falseCount;
        } catch (JSONException e) {
            e.printStackTrace();
        }    
        return result;
    }    

 

Java数据库查询结果的输出 摘自:北京海脉信息咨询有限公司   利用Java开发数据库应用时,经常需要在用户界面上显示查询结果。我们可以利用Vector、JTable、AbstractTableModel等三个类较好地解决这一问题。 类Vector:   定义如下: public class Vector extends AbstractList implements List , Cloneable , Serializable{…} 类JTable:   JTable组件是Swing组件中比较复杂的小件,隶属于javax.swing包,它能以二维的形式显示数据。类Jtable: 定义如下: public class JTable extends JComponent implements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, Accessible{…} 类AbstractTableModel:   定义如下: public abstract class AbstractTableModel extends Object implements TableModel, Serializable{…}   生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法: public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column);   我们可以建立一个简单二维(5×5): TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 5; } public int getRowCount() { return 5;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 数据库及其连接方法:   我们采用Sybase数据库数据库存放在数据库服务器中。路径为:D:WORKER,数据库名为:worker.dbf。具有以下字段字段名 类型 Wno(职工号) VARCHAR Wname(职工名) VARCHAR Sex(性别) VARCHAR Birthday(出生日期) DATE Wage(工资) FLOAT   要连接此数据库,需使用java.sql包中的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序,设置登记和数据库访问登录超时等方法。   具体连接方法如下:   定位、装入和链接SybDriver类。 driver="com.sybase.jdbc.SybDriver"; SybDriver sybdriver=(SybDriver) Class.forName(driver).newInstance();   注册SybDriver类。 DriverManager.registerDriver(sybdriver);   取得连接(SybConnection)对象引用。 user="sa"; password=""; url="jdbc:sybase:Tds:202.117.203.114:5000/WORKER"; SybConnection connection= (SybConnection)DriverManager.getConnection (url,user,password); 建立完连接后,即可通过Statement接口进行数据库的查询与更改。 实现方法:   对象声明。   AbstractTableModel tm;   //声明一个类AbstractTableModel对象   JTable jg_table;//声明一个类JTable对象   Vector vect;//声明一个向量对象   JScrollPane jsp;//声明一个滚动杠对象   String title[]={"职工号","职工名",   "性别","出生日期","工资"};   //二维列名   定制格。   实现抽象类AbstractTableModel对象tm中的方法:   vect=new Vector();//实例化向量   tm=new AbstractTableModel(){   public int getColumnCount(){   return title.length;}//取得格列数   public int getRowCount(){   return vect.size();}//取得格行数   public Object getValueAt(int row,int column){   if(!vect.isEmpty())   return   ((Vector)vect.elementAt(row)).elementAt(column);   else   return null;}//取得单元格中的属性值   public String getColumnName(int column){   return title[column];}//设置格列名   public void setValueAt   (Object value,int row,int column){}   //数据模型不可编辑,该方法设置为空   public Class getColumnClass(int c){   return getValueAt(0,c).getClass();   }//取得列所属对象类   public boolean isCellEditable(int row,int column){   return false;}//设置单元格不可编辑,为缺省实现   };   定制格:   jg_table=new JTable(tm);//生成自己的数据模型   jg_table.setToolTipText("显示全部查询结果");   //设置帮助提示   jg_table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   //设置格调整尺寸模式   jg_table.setCellSelectionEnabled(false);   //设置单元格选择方式   jg_table.setShowVerticalLines(true);//   设置是否显示单元格间的分割线   jg_table.setShowHorizontalLines(true);   jsp=new JScrollPane(jg_table);//给格加上滚动杠   显示查询结果。   连接数据库:已给出。   数据库查询:   Statement stmt=connection.createStatement();   ResultSet rs=stmt.executeQuery   ("select * from worker");   显示查询结果:   vect.removeAllElements();//初始化向量对象   tm.fireTableStructureChanged();//更新格内容   while(rs.next()){   Vector rec_vector=new Vector();   //从结果集中取数据放入向量rec_vector中   rec_vector.addElement(rs.getString(1));   rec_vector.addElement(rs.getString(2)); rec_vector.addElement(rs.getString(3)); rec_vector.addElement(rs.getDate(4));   rec_vector.addElement(new Float(rs.getFloat(5)));   vect.addElement(rec_vector);   //向量rec_vector加入向量vect中   }   tm.fireTableStructureChanged();   //更新格,显示向量vect的内容   实现示图中记录前翻、后翻的效果,有两种方法:   如果软件环境支持JDBC2.0,可直接利用rs.prevoius()和rs.next()获得记录,然后通过类JTextField中的setText()方法,显示出各个字段值。   如果不支持JDBC2.0,则可利用向量Vector按行取出JTable中数据。自定义一个指针,用来记录位置。当指针加1时,取出上一行数据放入Vector中显示;指针减1时,取出下一行数据显示。显示方法同上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值