问题描述
- 用Statement可以操作数据库PrepareStatement不行吗,为什么,看如下代码。
- import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JdbeTest {
public static void main(String[] args) throws Exception{Class.forName(""com.mysql.jdbc.Driver"");Connection conn = DriverManager.getConnection(""jdbc:mysql://127.0.0.1:3306/mydb""root""362324FJF"");PreparedStatement stat = conn.prepareStatement(""insert into user(idsalaryage) values(???)"");stat.setInt(1 1);stat.setDouble(2 100);stat.setInt(3 12);ResultSet rs = stat.executeQuery(""select * from user"");while(rs.next()){ System.out.println(rs.getObject(""id"")); System.out.println(rs.getObject(""salary"")); System.out.println(rs.getObject(""age"")); } rs.close(); stat.close(); conn.close();
}
}
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JdbeTest { public static void main(String[] args) throws Exception{ Class.forName(""com.mysql.jdbc.Driver""); Connection conn = DriverManager.getConnection(""jdbc:mysql://127.0.0.1:3306/mydb""root""362324FJF""); Statement stat = conn.createStatement(); stat.executeUpdate(""insert into user(idsalaryage) values(502030)""); ResultSet rs = stat.executeQuery(""select * from user""); while(rs.next()){ System.out.println(rs.getObject(""id"")); System.out.println(rs.getObject(""salary"")); System.out.println(rs.getObject(""age"")); } rs.close(); stat.close(); conn.close(); }}
解决方案
stat.setInt(1 1);stat.setDouble(2 100);stat.setInt(3 12);stat.executeUpdate();//增加这句
解决方案二:
你是说你用PreparedStatement没有插入成功是吗?
你的第一段代码中没有执行真正的插入操作,你虽然设置了参数,但是你使用的是查询方法,跟你前面设置的没有关系,你设置完毕后需要执行:
stat.executeUpdate();
执行这句成功后才能完成你前面定义的sql语句。
时间: 2024-10-08 13:52:44