今天用jdbc写了一句sql语句,通过PreparedStatement对象来插入记录,发现一个奇怪的问题,我明明是成功插入记录,可是pstmt.execute()确返回的是false,狂晕中。
String sqlText = "insert into problem(title, " +
"description, input, output, sample_input, " +
"sample_output, hint, source, uploader) " +
"values(?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt = null;
......
res = pstmt.execute();
呵呵,感到比较困惑。查看sun的API后恍然大悟。
sun API 写道
public boolean execute()
throws SQLExceptionExecutes the SQL statement in this PreparedStatement object, which may be any kind of SQL statement. Some prepared statements return multiple results; the execute method handles these complex statements as well as the simpler form of statements handled by the methods executeQuery and executeUpdate.
The execute method returns a boolean to indicate the form of the first result. You must call either the method getResultSet or getUpdateCount to retrieve the result; you must call getMoreResults to move to any subsequent result(s).
Returns:
true if the first result is a ResultSet object; false if the first result is an update count or there is no result
Throws:
SQLException - if a database access error occurs or an argument is supplied to this method
再次发现一个小问题,我将如何判断这条记录是否插入成功呢?我选择了不用execut方法,而改用executeUpdate方法。
if(pstmt.executeUpdate() == 1)
return true;
else
return false;
executeUpdate()返回数据库中更新记录的条数。那哪位大侠出来说一下execute该在什么情况下使用哇?
分享到:
相关推荐
JDBC 中 PreparedStatement 接口提供的 execute、executeQuery 和 executeUpdate 之间的区别及用法 JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。...
在实际应用中,如果需要获取动态构建的SQL,可能需要自定义一个`PreparedStatement`的代理类,覆盖`execute`或`executeQuery`方法,然后在这个代理类中拼接和打印出最终的SQL。但这需要对JDBC有深入的理解,并且需要...
此方法的返回值是一个整数,表示受SQL语句影响的行数。例如: ```java String sql = "UPDATE users SET name = ? WHERE id = ?"; PreparedStatement preparedStatement = connection.prepareStatement(sql); ...
调用存储过程需要用到`CallableStatement`接口,它继承自`PreparedStatement`。创建`CallableStatement`对象时,需要提供一个包含SQL调用存储过程的字符串。例如,`"{CALL sp_emps_in_dept(?)}"`表示调用名为`sp_...
2. 正确,`Statement`接口的`execute(String sql)`返回值是`boolean`,表示SQL语句的执行是否成功。 3. 正确,`PreparedStatement`是`Statement`的子接口,用于执行预编译的SQL语句。 4. 错误,`DriverManager....
调用存储过程主要通过CallableStatement接口,它是PreparedStatement的一个子接口,专为调用数据库的存储过程而设计。以下是一个简单的调用存储过程的步骤: 1. **加载驱动**:首先,我们需要加载对应数据库的JDBC...
- 建立:`Statement`直接用`conn.createStatement()`创建,而`PreparedStatement`需要预编译SQL,使用`conn.prepareStatement(sql)`。 - 执行:`Statement`执行包含完整SQL命令的语句,`PreparedStatement`只包含...
4. **执行SQL语句**:`Statement.execute()`或`PreparedStatement.execute()`方法用于执行SQL查询、更新或者DML操作。如果返回值为`true`,表示执行的是查询并返回结果集。 5. **处理结果集**:对于查询,执行后会...
- `execute()`用于执行任意SQL语句,根据返回值判断是否成功执行。 4. **PreparedStatement执行DML语句** - `PreparedStatement`接口增强了SQL语句的安全性和性能,支持参数化查询。 - `PreparedStatement`的...
对于有返回值的存储过程,我们可以使用 CallableStatement 对象来调用存储过程,并使用 registerOutParameter 方法来注册输出参数,然后使用 execute 方法来执行存储过程,并获取返回值。 Java 调用存储过程可以...
2. 创建CallableStatement对象,它继承自PreparedStatement,专门用于调用数据库的存储过程。 3. 使用CallableStatement的`{}`方法设置SQL调用语句,格式为`{call procedure_name(参数1, 参数2, ...)`}。 4. 设置...
- **`execute()`**:这是一个更通用的方法,可以执行任何类型的SQL语句,并根据执行的结果类型自动选择合适的返回值。 ### PreparedStatement `PreparedStatement`是`Statement`的一个子类,它可以预编译SQL语句,...
首先,我们需要理解CallableStatement接口,它是PreparedStatement的子接口,用于执行SQL存储过程。在Java中,我们通常使用CallableStatement来调用数据库中的存储过程和函数。 1. **调用MySQL函数**: 在Java中,...
这个接口扩展自`PreparedStatement`,专门用于执行SQL的存储过程和函数。以下是一个简单的示例: ```java CallableStatement cs = con.prepareCall("{?=call get_pname(?,?,?)}"); ``` 在这个例子中,`{?=call get_...
与PreparedStatement类似,它允许设置参数,并可以处理返回值和输出参数。 7. **DriverManager类**:负责管理所有的数据库驱动,包括加载驱动、建立连接等。 8. **SQLException类**:当出现数据库相关的错误时,抛...
3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...
`CallableStatement`是`PreparedStatement`的子类,专门用于调用数据库存储过程。以下是如何使用`CallableStatement`调用上面定义的存储过程`sp_pro_sal`: ```java String name = "SMITH"; int sal = 7788; ...
- **特性**:继承自 `PreparedStatement` 接口,因此它包含了所有 `PreparedStatement` 和 `Statement` 接口中定义的方法,但主要使用的方法包括 `execute()`、`registerOutParameter()` 等。 **2. 常用方法解析**...
`CallableStatement`用于调用存储过程,类似于`PreparedStatement`,但增加了处理输入/输出参数和返回值的功能。 #### ResultSet `ResultSet`对象包含了查询结果,提供了遍历和获取数据的方法,如`next()`(移动到...