角标越界 Java_【新人求助】利用占位符操作数据库是总是提示数组角标越界是怎么回事 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区...

用占位符和数组来操作数据库总是提示下角标越界,找了半天也没弄明白哪里有问题,这个地方是跟着云课堂老师的讲解做的,只不过操作的数据表不一样,但是老师那个就没问题,我就出了问题

513149a4bc950cdaf973b606424db773.gif,如果有大神能帮忙看看,真的感激不尽!!!!

下面是BaseDao数据库操作通用类

package basedao;

/*

* 数据库操作通用类

*/

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;

public class BaseDao {

protected Connection conn;

protected PreparedStatement ps;

protected Statement stmt;

protected ResultSet rs;

//获取数据库连接

public boolean getConnection(){

String driverClass = null;

String jdbcUrl = null;

String user = null;

String password = null;

//读取类路径下的jdbc.properties文件

try {

InputStream is = getClass().getClassLoader().getResourceAsStream("jdbc.properties");

Properties properties = new Properties();

properties.load(is);

driverClass = properties.getProperty("driver");

jdbcUrl = properties.getProperty("jdbcUrl");

user = properties.getProperty("user");

password = properties.getProperty("password");

//加载驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:shop","shop_display","1234");

} catch (ClassNotFoundException e) {

e.printStackTrace();

return false;

} catch (IOException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

return false;

}

return true;

}

//增删改

public int executeUpdate(String sql,Object ... params){

int updateRows = 0;

getConnection();

try {

ps=conn.prepareStatement(sql);

//填充占位符

for(int i = 0;i <= params.length;i++){

ps.setObject(i+1, params);

updateRows = ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

return updateRows;

}

//查询

public ResultSet executeSQL(String sql,Object[] params){

getConnection();

try {

ps=conn.prepareStatement(sql);

//填充占位符

for(int i = 0;i <= params.length;i++){

ps.setObject(i+1, params);     //就是数组这里,控制台抛出的异常里面提示下角标越界,这里我在eclipse上面没有写错:params后面是有字母i的,但是不知道为什么放到论坛上后面的总是消失,编辑好几次了,一直不显示

}

rs = ps.executeQuery();

} catch (SQLException e) {

e.printStackTrace();

}

return rs;

}

//关闭资源

public boolean closeResource (){

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

return false;

}

}

if(ps!=null){

try {

ps.close();

} catch (SQLException e) {

e.printStackTrace();

return false;

}

}

if(stmt!=null){

try {

stmt.close();

} catch (SQLException e) {

e.printStackTrace();

return false;

}

}

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

return false;

}

}

return true;

}

}

下面是DataBao接口

package data.impl;

public interface DataDao {

//添加数据

public void addData(int id, String name,int location,int leveis);

//删除数据

public void deleteData(int id);

//根据id修改数据

public void updateData(String name,int id);

//查询新闻信息

public void queryData();

}

下面是接口实现类

package data.impl;

import java.sql.ResultSet;

import java.sql.SQLException;

import basedao.BaseDao;

public class DataDaoImpl extends BaseDao implements DataDao{

//增加数据

public void addData(int id, String name,int location,int leveis){

try{

String sql = "insert into custom (id,name,location,leveis) VALUES (?,?,?,?)";

Object[] params={id,name,location,leveis};

int i = this.executeUpdate(sql,params);

if(i>0){

System.out.println("插入数据成功!");

}

}finally{

this.closeResource();

}

}

//删除数据

public void deleteData(int id){

try {

String sql = "delete from custom where id = ?";

Object[] params={id};

int i = this.executeUpdate(sql,params);

if(i>0){

System.out.println("删除数据成功!");

}

}finally{

this.closeResource();

}

}

//修改数据

public void updateData(String name,int id){

try {

String sql = "update custom set name = ? where id = ?";

Object[] params={name,id};

int i = this.executeUpdate(sql,params);

if(i>0){

System.out.println("更改数据成功!");

}

}finally{

this.closeResource();

}

}

//查询新闻信息

public void queryData(){

try {

String sql = "select * from custom";

Object[] params={ };

ResultSet rs=this.executeSQL(sql, params);

//(4)处理执行结果(ResultSet),释放资源

try {

while(rs.next()){

int id = rs.getInt("id");

String name = rs.getString("name");

int location = rs.getInt("location");

int leveis = rs.getInt("leveis");

System.out.println(id + "\t" +name + "\t"+ location + "\t\t" + leveis);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}finally{

this.closeResource();

}

}

public static void main(String[] args){

DataDaoImpl ddi = new DataDaoImpl();

//  ddi.addData(13,"华为",3,2);

//  ddi.deleteData(13);

//  ddi.updateData("万科",12);

ddi.queryData();

}

}

下面是数据库的表

上面黑体字加粗的部分eclipse里并没有写错

2016-5-3 19:36

6dba1577542d354fd3d14d20b9f20920.png

2016-5-4 10:55

d407b53e44932a23bd7113545e312d04.png

本帖最后由 遠山如黛 于 2016-5-4 10:55 编辑

分享至:

90ed4b13fe016cebd9fe3df2ae3a899b.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简述ospf的工作原理_现代数字存储示波器的工作原理简述

示波器是一种用途十分广泛的电子测量仪器。俗话说&#xff0c;电是看不见摸不着的。但是示波器可以帮我们“看见”电信号&#xff0c;便于人们研究各种电现象的变化过程。所以示波器的核心功能&#xff0c;就和他的名字一样&#xff0c;是显示电信号波形的仪器&#xff0c;以供…

pyecharts 间距_高月双色球20108期:红球首尾间距参考29区段

双色球第2020108期奖号为&#xff1a;03 09 11 24 25 28 16&#xff0c;红球和值&#xff1a;100&#xff0c;重号2个&#xff1a;11 28&#xff0c;首尾间距&#xff1a;25。和值&#xff1a;上期和值为100&#xff0c;上升了22点&#xff0c;再次开出小和值&#xff0c;最近…

java类中声明log对象_用于Android环境,java环境的log打印,可打印任何类型数据

LogXixi用于Android环境&#xff0c;java环境的log打印&#xff0c;可打印任何类型数据,根据android项目环境debug环境自动打开&#xff0c;release环境自动关闭android环境log打印&#xff0c;规范bean对象&#xff0c;json&#xff0c;xml对应log&#xff0c;crash捕捉&#…

xbox手柄接收器驱动_xbox手柄连接 win10电脑

xbox手柄 连接win10笔记本 分为三种连接方式&#xff1a;有线蓝牙无线适配器首先说明一下连接方式的特点然后说明连接方式第一种&#xff1a;有线连接 手柄直接通过micro USB数据线和win10电脑连接。这一步最简单&#xff0c;一般电脑会自动安装驱动&#xff0c;连接之后可以使…

单片机复位后为什么要对sp重新赋值_51单片机系列之2点亮第一个led小灯

点亮led灯简单的理解就是要求阳极高电平阴极低电平。接下来我们去看看单片机的原理图&#xff0c;找到led 模块。如图可以看到led的阳极是连接的VCC(电源高电平)阴极连接的接口是单片机的I/O口P20到P27.要想led点亮只需控制单片机I/O口输出低电平即可(单片机I/O口默认高电平)。…

关机时无人照管更新正在运行_无法抗拒的未来:无人叉车在内部物流中已成为现实...

自动化和半自动化的叉车不再是新奇的东西&#xff0c;在人力短缺的仓库中取得了进展。他们最终会成为规范吗?目前尚不知道全世界有多少辆无人驾驶叉车(也称为自动叉车、机器人叉车或者AGV)售出。但是叉车生产商都显示出&#xff0c;它在该领域的迅速增长。重要的是&#xff0c…

打开浏览器不是主页_对于360浏览器的一些小小改善

​虽然自己不怎么喜欢&#xff0c;但是以前小编的多数同事都在使用它&#xff0c;所以今天带来360安全浏览器改造的小建议。整理&排版 | idea君 &#xff0c;预计阅读 | 4分钟文章意在学习交流分享&#xff0c;如有侵权请联系删除封面&#xff1a;http://www.pexels.com/zh…

c++ 二次开发 良田高拍仪_六枝特良田LYV-850加工中心导轨配套防护罩日常维修

六枝特良田LYV-850加工中心导轨配套防护罩日常维修我厂生产的防护罩质量可与原厂的一样&#xff0c;同样的保障&#xff0c;质保期为一年&#xff0c;护罩安装不合适支持退换货。尤其是元件连结的接合面刚度&#xff0c;对加工精度影响较大。通常&#xff0c;采用组合夹具时其尺…

atomikosdatasourcebean mysql_SpringBoot2整合JTA组件实现多数据源事务管理

一、JTA组件简介1、JTA基本概念JTA即Java-Transaction-API&#xff0c;JTA允许应用程序执行分布式事务处理&#xff0c;即在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序对JTA的支持极大地增强了数据访问能力。XA协议是数据库层面的一套分布式事务管理的规范,JTA…

crt 8.7.3 黑暗模式_民谣缠绕厄运金属,抒情中的黑暗故事

2020/7/31&#xff0c;瑞典厄运/重金属乐队Dun Ringill&#xff0c;发表了新专辑“Library of Death”。“Library Of Death”是瑞典乐队Dun Ringill的第二张唱片&#xff0c;由The Order of Israfel、Doomdogs等成员发起。乐队的声音&#xff0c;介于重金属和厄运金属之间&…

前窗玻璃膜贴了一周还有气泡_关于车窗玻璃的养护你了解多少?

【中国皮卡网 维修保养】车窗玻璃的养护是最容易忽视的&#xff0c;但它也是非常重要的&#xff0c;虽然在用车过程中我们很少直接接触车窗玻璃&#xff0c;但是它却时时刻刻在影响着驾驶者。相信很多人会有洗车的习惯&#xff0c;洗好之后的车窗玻璃非常明亮&#xff0c;不仅仅…

c语言新龟兔赛跑_幽默 | 新龟兔赛跑

新龟兔赛跑作者 / 何必加自从输给了乌龟后&#xff0c;兔子心里很是生气。这一天&#xff0c;他又遇见了乌龟&#xff0c;要求和他比赛&#xff0c;一定要一雪前耻。乌龟答应了&#xff0c;并且约定连比三场。第一场还是兔子输了&#xff0c;原来他一着急&#xff0c;跑错了方向…

bugku 杂项 就五层你能解开吗_长春老旧小区加装电梯,你家符合条件吗?_媒体_澎湃新闻...

新朋友戳蓝字关注我们哦&#xff01;长春市老旧小区开始加装外置电梯大家都很关注很多市民也在想我家符合加装条件吗&#xff1f;能申请吗&#xff1f;伴随着长春市朝阳区3个老旧小区加装电梯工作的结束&#xff0c;这项惠民工程也成为了老百姓茶余饭后的谈资&#xff0c;那么大…

vba 指定列后插入列_Excle中的VBA介绍分享

SunYoung1、什么是VBAVisual Basic for Applications(VBA)是Visual Basic的一种 宏 语言&#xff0c;它能使常用的程序自动化&#xff0c;是针对Office开发的一种工具&#xff0c;通俗点讲&#xff0c;VBA是一种Excle能听懂识别的编程语言。2、在Excle中VBA的作用2.1、实现Exce…

php中文歌词,html如何制作滚动歌词

html制作滚动歌词的方法&#xff1a;首先在标签里面写好编码格式&#xff0c;引入css样式和jQuery&#xff1b;然后放置播放器&#xff0c;代码为【】。本教程操作环境&#xff1a;windows7系统、html5版&#xff0c;DELL G3电脑。html制作滚动歌词的方法&#xff1a;首先我们创…

docker run 服务名_在 WSL2.0 的 Ubuntu 18 里使用 Docker

近日&#xff0c;随着Windows 10 2004版本的发布&#xff0c;WSL 2经过了近一年的insider测试&#xff0c;现在也正式上线了。Windows 10 2004中引入了一个真实的Linux kernel&#xff0c;使得系统全部的系统调用更加兼容。这也是首次&#xff0c;Linux kernel安装在Windows系统…

vb.net如何查询电脑麦克风收到声音_EMUI 10.1 跨屏协同实测:这一次把你的手机「搬」进电脑...

智能手机发展到现在&#xff0c;我们越来越需要手机与其他设备进行互联互通。电脑是我们办公最常用的工具&#xff0c;手机则是生活必需设备&#xff0c;这两者的协同需求&#xff0c;自然也就成为了大多数用户的痛点。Apple 用隔空投送、接力、随航等连续互通功能来打造系统生…

gerber文件怎么导贴片坐标_SMT贴片工序

贴片&#xff0c;也称SMT&#xff0c;就是把元器件用贴片机设备贴装在印刷好的PCB板上。贴片这一过程之所以用“贴”字&#xff0c;是因为锡膏内有助焊剂的成分&#xff0c;有一定的粘性&#xff0c;能够在没有熔化的时候&#xff0c;也能够黏住元器件。SMT又称贴片&#xff0c…

es内嵌文档查询_ElasticSearch 文档的增删改查都不会?

本文主要是介绍 ElasticSearch 的文档增删改查和批量操作&#xff0c;同时会介绍一些 REST API 返回状态码的具体含义。我们先来看下这个表&#xff1a;这个表包含了 Index、Create、Read、Update、Delete 这五种方法&#xff0c;我们先来看下 CRUD 操作的 HTTP 请求都长什么样…

如何在ps添加箭头_「PS精选案例教程」制作斑驳生锈字体

这个教程会教您如何设计发光斑驳的字体特效&#xff0c;会教您运用PS滤镜和纹理图片&#xff0c;同时也诠释了如何运用笔刷和图层样式给最终的字体效果增添光感。来&#xff0c;先看看最终效果&#xff01;第一步&#xff1a;创建一个1024*768的新文档。前景色#532118&#xff…