preparedstatement.setstring
时间: 2023-04-29 16:04:59 浏览: 329
PreparedStatement 是 Java 的一个接口,通常用来执行预编译的 SQL 语句。其中 setString 方法用于将参数设置为给定的字符串值。使用方法如下:
```
PreparedStatement pstmt = conn.prepareStatement("UPDATE Employee SET salary = ? WHERE id = ?");
pstmt.setString(1, "5000");
pstmt.setInt(2, 1);
int rows = pstmt.executeUpdate();
```
其中 setString(1,"5000")是将第一个问号赋值为5000
相关问题
在java中写入如下代码:public int insert(int Id, String PName, String AName,String ADynasty,String PCate,String PContent){ String xinde0 = "insert into awrite values(?,?,?,?)"; String xinde = xinde0 +"insert into poem values(?,?,?,?)"; int i = 0; try{ preparedStatement = connection.prepareStatement(xinde); preparedStatement.setInt(1,Id); preparedStatement.setString(2,PName); preparedStatement.setString(3,AName); preparedStatement.setString(4,ADynasty); preparedStatement.setInt(5,Id); preparedStatement.setString(6,PName); preparedStatement.setString(7,PCate); preparedStatement.setString(8,PContent); i=preparedStatement.executeUpdate(); }catch (SQLException e){ e.printStackTrace(); }finally { try { preparedStatement.close(); connection.close(); }catch (SQLException e){ e.printStackTrace(); } } return i; } 我这样写是为了将jsp文件中输入框获得的参数分开插入数据表awrite和数据表poem,即取得的Id,PName,AName,ADynasty数据插入数据表awrite,取得的Id,PName,PCate,PContent插入数据表,我这样写无效,返回的i值为0提示我没有成功,我应该如何修改代码
你的代码中有两个SQL语句,但是你只使用了一个PreparedStatement对象,这是不能正常工作的。
你可以尝试按照以下步骤修改代码:
1.分别创建两个PreparedStatement对象,一个用于向awrite表插入数据,一个用于向poem表插入数据。
2.在向poem表插入数据时,将第一个参数Id改为第四个参数ADynasty,因为poem表中第一个参数是ADynasty。
修改后的代码如下所示:
```
public int insert(int Id, String PName, String AName, String ADynasty, String PCate, String PContent) {
String awriteSql = "insert into awrite values(?,?,?,?)";
String poemSql = "insert into poem values(?,?,?,?)";
int i = 0;
try {
PreparedStatement awriteStatement = connection.prepareStatement(awriteSql);
awriteStatement.setInt(1, Id);
awriteStatement.setString(2, PName);
awriteStatement.setString(3, AName);
awriteStatement.setString(4, ADynasty);
awriteStatement.executeUpdate();
PreparedStatement poemStatement = connection.prepareStatement(poemSql);
poemStatement.setInt(1, Id);
poemStatement.setString(2, PName);
poemStatement.setString(3, PCate);
poemStatement.setString(4, PContent);
i = poemStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return i;
}
```
希望可以帮助你解决问题。
java.lang.NullPointerException: Cannot invoke "java.sql.PreparedStatement.setString(int, String)" because "this.pstmt" is null
这个错误信息是在Java中处理数据库操作时常见的NullPointerException,它表示尝试对null对象调用了方法。在这个特定的情况下,`pstmt` 变量是一个PreparedStatement对象,可能是你在设置SQL查询参数之前没有正确初始化或者已将其置为了null。
`java.sql.PreparedStatement.setString(int, String)` 是用于设置预编译SQL语句中的参数的方法,其中第一个参数是参数的位置(从1开始计数),第二个参数是要设置的实际值。由于抛出了`NullPointerException`,说明`pstmt` 没有被赋予有效的连接或还没有被实例化,所以在调用 `setString` 方法时引发了空指针异常。
要解决这个问题,你需要检查一下代码流程,在调用 `setString` 方法前确认`pstmt` 是否已经被正确创建并赋值了。例如:
```java
Connection conn = DriverManager.getConnection(...);
Statement pstmt = conn.prepareStatement("INSERT INTO ...");
// ... (在这里确保pstmt已被初始化)
pstmt.setString(1, value); // 现在可以安全地设置参数
```
阅读全文