角标越界 Java_【新人求助】利用占位符操作数据库是总是提示数组角标越界是怎么回事 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区...
用占位符和数组来操作数据库总是提示下角标越界,找了半天也没弄明白哪里有问题,这个地方是跟着云课堂老师的讲解做的,只不过操作的数据表不一样,但是老师那个就没问题,我就出了问题
,如果有大神能帮忙看看,真的感激不尽!!!!
下面是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
2016-5-4 10:55
本帖最后由 遠山如黛 于 2016-5-4 10:55 编辑
分享至:
角标越界 Java_【新人求助】利用占位符操作数据库是总是提示数组角标越界是怎么回事 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区...相关推荐
- 拯救者linux无法正常关机,菜鸟求助。centos无法关机。请各位高手帮忙! - Linux论坛 - 51CTO技术论坛_中国领先的IT技术社区...
没有主动改过. 我的grub配置文件如下: # grub.conf generated by anaconda # # Note that you do not have to rerun grub ...
- oracle 12 c盘已共享,求助,12c使用iscsi作为共享存储的问题,数据不同步 - Oracle论坛 - 51CTO技术论坛_中国领先的IT技术社区...
发表于 2020-7-16 17:35 | 来自 51CTO网页 2020,7月.8月.9月,全球历史最大崩盘,终于到来了 !! 2020,7月.8月.9月,全球历卝史最大崩卝盘,终于到来了 !! 作 ...
- oracle查看表扩展,求助:如何查询oracle表空间允许自动扩展的最大值? - Oracle论坛 - 51CTO技术论坛_中国领先的IT技术社区...
--表空间使用率检查脚本 --注:该脚本有个缺陷,无法检查使用率为100%的表空间,即dba_free_space中没有记录的表空间 SELECT UPPER(F.TABLESPACE_NAME) T ...
- cacti cmd.php 解析,CACTI搭建 - Linux论坛 - 51CTO技术论坛_中国领先的IT技术社区
?????系统日志是在哪里?linux的? 手动运行poller不报任何错误. 现在又出个图,我把data source设置为debug后执行了poller.php结果cpu的图除了,其他的图没有,还 ...
- 服务器dbback文件夹,怎么让SQL 2000定时复制备份数据库到局域网中的指定电脑上? - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...
如题,这是我在网上找的JOB脚本,试用只能在本地盘符间复制有效,局域网中的共享失效. 系统环境: WIN2K3 SQL 2000 SP4 网络环境: SQL服务器:192.168.1.2 备份服务器: ...
- mac mtu测试_一个关于MTU的现象,请兄弟们看看是不是确实是这样。 - 网络管理论坛 - 51CTO技术论坛_中国领先的IT技术社区...
MTU和Fragment详解 1. 基础知识 我们知道, 数据在网络上传输时, 要经过一段一段的链路.当数据从某一段链路的一端传到另一端的过程中, 需要考虑的是数据链路层协议, 在这一层, 我们观察到 ...
- 检查mysql dbcc_dbcc checkdb查出来显示这些信息我该怎么处理?谢谢 - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...
服务器: 消息 8966,级别 16,状态 2,行 1 未能读取并闩锁页 (1:342144)(用闩锁类型 UP).菴漍 失败. 服务器: 消息 8966,级别 16,状态 1,行 1 未能读取并闩锁 ...
- c语言整形除法是五舍六入吗,四舍六入五成双 - C/C++论坛 - 51CTO技术论坛_中国领先的IT技术社区...
复制内容到剪贴板 代码:#include using namespace std; #define FLENGTH 1000; //宏定义保留3位小数 double fun(double ...
- vba mysql 没有为命令对象设置命令_怎样解决“没有为命令对象设置命令”的错误? - .Net论坛 - 51CTO技术论坛_中国领先的IT技术社区...
复制内容到剪贴板 代码:Private Sub dataQuery_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) H ...
最新文章
- Codeforces 617E XOR and Favorite Number
- 这门国产语言终于要发布 1.0 版本了
- 因为加班,错过77万年终大奖,你还加班?
- 从数据库中导出数据库文档
- 极域电子教室软件卸载密码怎么查看
- 三星固态硬盘装linux,三星T5 SSD制作ubuntu18.04随身携带即插即用与win10共享文件真爽~(简单粗暴安装大法一步到位)...
- 2014年上半年计算机试题,2014年上半年程序员考试上午试题及答案
- Rational License Key Error的永久解决办法
- 安卓证书在线制作工具
- c语言 运行经过八个翻译阶段,GitHub - BUAA-SE-Compiling/miniplc0-handbook: miniplc0 指导书...
- 高数 下总复习 完结
- 【畅购商城】用户登录
- PHP电商的sku,PHP 商品SKU表怎么设计
- atm机存款场景图_怎么在自动存款机上存款?有图具体步骤的更好?
- Doom-Emacs安装和基本使用方法
- Codesys的文件读取功能---G代码文件读取及运行
- I/O多路转换之select与select服务器
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生日常行为评分管理系统9gl38(1)
- 《预训练周刊》第30期:谷歌首次展示新版语言模型BERT,参数达4810亿个
- Python第二周作业
热门文章
- 自从有了mybatis-plus代码生成器,写代码效率高了一大截
- 微服务的好处与弊端_《微服务架构设计模式》-学习总结07
- Qt中颜色选择框输出所选中的颜色值
- linux 查看进程的信号,Linux 进程信号查看与控制
- 麦块不显示服务器,为什么开不了服务器啊!
- linux龙芯自动挂载u盘,Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
- 三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布
- vs2017 cmake android,CMake构建VS2017工程
- php div边框,CSS自定义边框
- html5 css3考试f卷,HTML5 CSS3 JavaScriptWeb前端开发自测试卷3.docx