0 0

oracle中prepareStatement输入“?”不好使10

Statement stmt = conn.createStatement();
String sql="select 1 from cao where a ="+"'"+vo.getUsername()+"' and b ='"+vo.getPassword()+"'";
rs = stmt.executeQuery(sql);
    


    /*

pstmt = conn.prepareStatement("select 1 from cao where a= ? and b = ? ");
pstmt.setString(1, vo.getUsername());
pstmt.setString(2, vo.getPassword());
rs=pstmt.executeQuery();

*/

 

我用网页做一个验证用户登录的小程序,上边那段代码是好使的,下面的不好使。。。求正解。。。


问题补充:<div class="quote_title">janeky 写道</div><div class="quote_div">第一段代码的SQL语句是用字符串拼接的, <br /> <br />就容易被人用 SQL注入 工具</div> <br /> <br /> <br />我说的不是这个问题,我连接数据库的时候 用prepareStatement得不到我要查询的值,而用 createStatement 能得到,我想问这个是为什么?。。很纠结。。
DAO 
2011年4月17日 18:58

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

0 0

这个问题我也遇见过,俗称“无影脚”,一样的查询条件但是得到不同的结果。不是所有的都会出现“无影脚”,出现的时候就用第一种方式就可以了。

个人感觉ORACLE中字段的后面会有一段空白的东西,可能是这个引起的吧,我也茫然求理论。

2011年4月19日 13:05
0 0

用第二段的时候,有输入什么吗?

2011年4月19日 11:42
0 0

第一段代码的SQL语句是用字符串拼接的,

就容易被人用 SQL注入 工具

2011年4月17日 22:41

相关推荐

    运用Java如何存取Oracle中的CLOB类型字段

    ### 运用Java如何存取Oracle中的CLOB类型字段 #### 概述 在数据库操作中,经常会遇到处理大量文本数据的需求,例如存储文章、新闻、文档等。Oracle数据库提供了CLOB(Character Large Object)类型来存储大容量的...

    使用JDBC和Hibernate来写入Blob型数据到Oracle中

    在Java开发中,有时我们需要存储二进制大数据,如图片、视频或文档,这时Oracle数据库中的Blob类型就显得尤为重要。Blob(Binary Large Object)是Oracle用来存储大对象数据的类型,它可以高效地处理大量的二进制...

    在Java中实现Oracle变量的绑定方法 .doc

    PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setInt(1, id); ResultSet rs = pstmt.executeQuery(); ``` 这里的`PreparedStatement`对象提供了变量绑定的能力,`?`符号作为占位符,然后通过...

    DBD-Oracle-1.74.tar.gz

    5. **性能优化**:通过合理使用绑定变量(bind variables)、预编译的SQL语句(prepare statement)和批量处理(array fetch size)等技术,可以提高DBD::Oracle的执行效率。 6. **安全考虑**:在编写数据库操作...

    动态查询oracle加反射

    PreparedStatement pstmt = connection.prepareStatement(query); pstmt.setString(1, value); ResultSet rs = pstmt.executeQuery(); ``` **反射**: Java反射API允许我们在运行时获取关于类、接口、字段和方法的...

    利用Java程序实现Oracle数据库中大对象的存取.pdf

    PreparedStatement pstmt = conn.prepareStatement("INSERT INTO BLOB_TABLE (BLOB_COLUMN) VALUES (?)"); pstmt.setBinaryStream(1, inputStream); pstmt.executeUpdate(); ``` 该代码使用jdbc驱动程序连接Oracle...

    JDBC和Oracle的参数设置和调用技术.pdf

    PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "value"); // 设置IN参数,1表示参数位置,"value"是传入的值 ResultSet rs = pstmt.executeQuery(); // 执行查询 ``` 在实际开发中,...

    JDBC连接操作Oracle及Mysql详解

    例如,`PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM users WHERE username=? AND password=?");`,然后通过`pstmt.setString(1, username)`和`pstmt.setString(2, password)`设置参数值...

    jsp连接Oracle数据库实现增删改查

    比如`PreparedStatement pstmt = conn.prepareStatement("INSERT INTO students VALUES (?, ?)")`,然后设置参数`pstmt.setString(1, name); pstmt.setInt(2, age); pstmt.executeUpdate();`。 6. **JSP页面交互**...

    mysql,sqlserver,oracle三种数据库的大对象存取

    在Java编程中,可以通过setBinaryStream方法直接将输入流设置到PreparedStatement中,实现快速且便捷的大对象存储和读取。 例如: ```java PreparedStatement ps = conn.prepareStatement("INSERT INTO tb_file ...

    使用hibernate对oracle读取blob

    connection.prepareStatement("INSERT INTO media (id, content) VALUES (?, ?)") .setLong(1, id) .setBlob(2, inputStream) .executeUpdate(); ``` ### 3. 使用Hibernate读取Blob 当需要从数据库读取Blob时,...

    简单模糊查询,是关于java和Oracle的一个模糊查询

    PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "%search_pattern%"); ``` 其中,`%search_pattern%`是用户输入的模糊查询字符串,`?`在预编译时会被替换。 3. **执行查询并获取...

    oracle数据库的clob大字段在jdbc中的处理方式

    PreparedStatement pstmt = connection.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Clob clob = rs.getClob("clob_column"); Reader reader = clob.getCharacterStream()...

    java操作Oracle批量入库

    PreparedStatement pstmt = conn.prepareStatement(sql); ``` 3. **设置参数和添加到批处理** 对于批量操作,我们可以多次调用`setXXX()`方法来设置占位符的值,然后调用`addBatch()`将这条SQL语句加入到批处理...

    java存取oracle中的COLB类型数据.pdf

    PreparedStatement pstmt = conn.prepareStatement("insert into test (id, content) values (?, ?)"); pstmt.setInt(1, 1); pstmt setClob(2, clob); pstmt.executeUpdate(); // 读取 CLOB 类型的数据 ...

    jsp结合html编辑器FCKeditor对Oracle CLOB大字段操作范例

    pstmt = conn.prepareStatement(sql); pstmt.setCharacterStream(1, new java.io.StringReader(content), content.length()); pstmt.executeUpdate(); } catch (Exception e) { out.println("Error: " + e....

    JSP+ORACLE注入方法

    PreparedStatement pstmt = conn.prepareStatement(query); pstmt.setString(1, user); ResultSet rs = pstmt.executeQuery(); ``` 2. **输入验证**:在执行SQL查询之前,对用户输入进行验证,确保它们符合预期的...

    clob增加、修改

    根据给定文件的信息,本文将深入探讨如何在Java中操作Oracle数据库中的CLOB字段,包括添加和修改等操作。CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,在处理如文章、评论等长文本时非常...

    OCI 操作读取oracle

    3. **执行 SQL**:通过 `ocilib_statement_prepare` 准备 SQL 语句,然后用 `ocilib_statement_execute` 执行。 4. **绑定和获取结果**:使用 `ocilib_statement_bind_variable` 绑定输入/输出变量,`ocilib_...

Global site tag (gtag.js) - Google Analytics