0 0

有关于Struts2创建Web工程中JDBC修改表字段值的问题5

2013-08-03 ==========================================================================================

客户端更新语句:update cost_xjz set status='0',startime=to_date('2013-08-01 16:30:22','yyyy-mm-dd hh24:mi:ss') where id = 21;

上面是客户端更新语句,使用完全正常无任何问题! =========================================================================================

JDBC更新语句:"UPDATE COST_XJZ SET STATUS='0',STARTIME=TO_DATE('?','YYYY-MM-DD HH24:MI:SS') WHERE ID = ?"; =======================================================================================

JDBC 更新方法:

public void openCost(int id) throws SQLException { ​

       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ​

       String t = sdf.format(new Date()); ​

       update(OPEN_COST, new Object[]{"0",t,id});

​}

update是我自己封装的基于JDBC技术更新数据表的方法,已测试多种表,完全无任何问题,就不贴了。 ============================================================================================

下面是建表语句:

CREATE TABLE COST_XJZ(

ID                               NUMBER(4) CONSTRAINT COST_ID_PK PRIMARY KEY,

NAME                        VARCHAR(50) NOT NULL,

BASE_DURATION    NUMBER(11),

BASE_COST             NUMBER(7,2),

UNIT_COST              NUMBER(7,4), STATUS CHAR(1) CONSTRAINT COST_STATUS_CK CHECK (STATUS IN (0,1)),

DESCR                      VARCHAR2(100),

CREATIME                DATE DEFAULT SYSDATE ,

STARTIME                DATE, COST_TYPE CHAR(1)

);

=============================================================================

下面是控制台打印的异常信息:

​java.sql.SQLException: 无效的列索引 at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5168) at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8098) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8034) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8767) at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:8748) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:230) at implement.BaseDAO.update(BaseDAO.java:57) at implement.CostDAOImpl.openCost(CostDAOImpl.java:125) at test.TestCostDAO.testOpen(TestCostDAO.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) =========================================================================================

请各路大神指点下到底是什么地方出了问题!不胜感激!

2013年8月03日 17:23

2个答案 按时间排序 按投票排序

0 0

采纳的答案

问题应该是在楼主将一个String类型的变量映射到数据看一个DATE类型的字段的问题,看你starttime字段的类型是DATE,但是你在JAVA中set的类型是String.两者映射不上,所以出现这个错误

2013年8月03日 22:39
0 0

UPDATE COST_XJZ SET STATUS='0',STARTIME=TO_DATE(?,'YYYY-MM-DD HH24:MI:SS') WHERE ID = ?

2013年8月04日 01:15

相关推荐

    struts2+jdbc+jsp增删改查

    5. **Struts2与JSP的交互**:在Struts2中,Action执行完毕后会返回一个结果类型,该结果类型对应一个JSP页面。例如,一个名为"StudentAction"的Action可能会返回"success"结果,这将导致Struts2加载对应的success....

    struts2 实现oracle数据库的增删改查

    例如,如果我们有一个名为`Employee`的表,我们可以创建一个对应的`Employee`类,包含与表字段相对应的属性和getter/setter方法。 创建操作(Create):在Action类中,我们可以编写一个方法来接收用户输入的数据,...

    struts2+mybatis 入门实例

    Struts2和MyBatis是Java Web开发中常用的两个框架,它们分别负责MVC模式中的控制层和数据访问层。本实例将引导你入门这两个框架的整合使用。 **Struts2** 是一个强大的MVC框架,它继承了Struts1的优点,并引入了更...

    Struts2+Spring+Mybatis整合jar包(完整版)

    Struts2、Spring和Mybatis是Java Web开发中三大核心框架,它们的整合使用能够构建出高效、可维护的企业级应用程序。Struts2作为MVC框架负责控制流程,Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,...

    struts2 hibernate spring整合入门(附实例源码及jarbao--用户名字段的操作)

    Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自在不同的层面提供了解决方案,而将它们整合在一起可以构建出强大的企业级应用。本篇内容将深入讲解这三个框架的整合,以及如何实现“用户名字段的...

    ssi(struts2)

    Ibatis通过SQL映射文件将Java对象与数据库表字段对应,简化了DAO(Data Access Object)层的开发,同时避免了JDBC的繁琐编码。 **整合Spring和Struts2** 整合Spring和Struts2通常涉及以下几个步骤: 1. 添加相关...

    .Struts2整合Hibernate深入详解

    此外,还要为每个数据库表创建对应的实体类,利用Hibernate的注解或XML映射文件定义字段与表字段的对应关系。 在实际操作中,我们会在Action类中创建一个Session,通过Session执行查询、插入、更新和删除等数据库...

    Struts2.3.6+MyBatis3.2.7+jasperreports 5.6.0+oracle 10g的集成实例

    4. **实体类**:创建一个对应的实体类`Student.java`,包含与数据库表字段对应的属性和getter/setter方法。 5. **代码实现**:集成过程中,首先实现MyBatis的基本功能,如CRUD操作。接着,将MyBatis与Struts2结合,...

    用struts做的对单表的增删改查

    例如,如果我们有一个名为`Student`的表,我们可以创建一个对应的`Student` Java类,包含与表字段相对应的属性和getter/setter方法。 2. **数据库连接**:使用JDBC(Java Database Connectivity)或者ORM(Object-...

    java web hibernate struts spring 全方位解决乱码

    在Java Web开发中,我们经常会遇到各种乱码问题,特别是在使用Hibernate、Struts和Spring等框架时。这些框架处理数据的方式以及与数据库交互的过程都可能导致字符编码不一致,从而引发乱码现象。以下是对这些技术全...

    struts2.0实现对后台数据库的操作

    例如,如果我们的表名为`users`,则可以创建一个User类,包含与表字段相对应的属性,并提供getter和setter方法。 为了实现数据库操作,我们需要创建DAO(Data Access Object)接口和其实现类。DAO接口定义了CRUD...

    SH2 简单整合了Struts2和Hibernate框架,实现了登录、注册功能

    Struts2和Hibernate是Java开发领域中常用的两个开源框架,它们分别专注于Web应用的MVC(Model-View-Controller)架构管理和数据持久化。在Java Web开发中,这两个框架的整合能够有效地提升开发效率和代码质量,使得...

    struts2.0+hibernate环境搭建

    在这个环境中,Struts2负责处理用户请求并控制应用程序流程,而Hibernate则作为数据访问层,管理与数据库的交互。 在"struts2.0+hibernate环境搭建"的过程中,我们需要进行以下几个关键步骤: 1. **创建数据库表**...

    整合struts+hibernate例子图文详解

    创建一个新的Java Web项目,并导入所有必要的运行库文件,包括Struts 2和Hibernate的相关JAR包,以及其他的依赖库如Servlet API、JDBC驱动等。确保你的项目构建路径包含了这些库文件。 3. **配置Hibernate** 在...

    最新Struts和Hibernate和Spring经典面试题

    可以通过使用双向一对多关联、灵活使用单向一对多关联、配置对象缓存、继承类使用显式多态、表字段要少等方法来优化 Hibernate。 Struts 1. Struts 工作机制? Struts 的工作机制包括加载初始化 ActionServlet、...

    Ibatis+Spring+struts完整代码案例

    Ibatis的核心理念是SQL映射,通过XML或注解方式将Java对象与数据库表字段进行绑定,实现了数据访问层的解耦。在本案例中,你将看到如何创建Mapper接口,编写XML配置文件,以及如何在Service层中调用这些Mapper方法...

    struts2包+ibatis组合+oracle

    Struts2、iBatis和Oracle是Web应用开发中常见的技术栈,它们分别在MVC框架、持久层处理和数据库管理方面发挥重要作用。下面将详细解释这三个组件以及它们的组合应用。 **Struts2** 是一个基于MVC(Model-View-...

    Hibernate、Spring和Struts工作原理及使用理由

    2. **解析映射信息,创建SessionFactory**:映射信息通常在.hbm.xml文件中定义,SessionFactory是线程安全的,用于创建Session实例。 3. **打开Session**:Session是Hibernate的主要工作接口,它负责与数据库交互,...

    hibernate struts oracle例子

    【标题】:“Hibernate Struts Oracle例子”揭示了在Java Web开发中如何整合这三个关键技术来构建一个功能完善的数据库驱动的应用程序。Hibernate是Java领域中的对象关系映射(ORM)框架,它使得开发者可以使用面向...

    struts+spring+hibernate例子

    在这个例子中,Hibernate可能用于创建User实体类,定义其属性与数据库表字段对应,然后通过Session接口进行CRUD操作。 4. 整合:Struts、Spring和Hibernate的整合主要是通过Spring的Struts插件实现,它可以处理...

Global site tag (gtag.js) - Google Analytics