gpt4 book ai didi

java - 如何从java调用更新SqlTable值的存储过程

转载 作者:行者123 更新时间:2023-12-01 13:44:00 24 4
gpt4 key购买 nike

我有一个具有以下属性的 sql 表

create table Product(
ID int identity primary key not null,
Name nvarchar(50) not null,
Price float not null
)

我创建了一个存储过程来插入值:

create proc spInsertNewProduct(
@name nvarchar(50),
@price float,
@qty int)
as
begin
insert into Product values (@name,@price,@qty)
end

我像这样从java调用这个方法:

public static void insertNewProduct(Product p){
Connection connection = null;
try {
connection = DriverManager.getConnection(url);
String SPsql = "exec[spInsertNewProduct] ?,?,?";
PreparedStatement ps = connection.prepareStatement(SPsql);
ps.setEscapeProcessing(true);
ps.setString(1, p.getProductName());
System.out.println(p.getProductName());
ps.setDouble(2, p.getPrice());
System.out.println(p.getPrice());
ps.setInt(3,p.getQty());
System.out.println(p.getQty());
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}

}
}

然后我有这个存储过程,它更新现有对象的值

create proc spUpdateProduct(
@id int,
@name nvarchar(50),
@price float,
@qty int)
as
begin
update Product
set Name = @name, Price = @price , Qty = @qty
where ID = @id
end

我尝试从 java 调用此过程,但收到此错误:索引 0 超出范围。 网络上的主题对我帮助不大。这是我的更新方法的代码。

    public static void updateProduct(Product p){
Connection connection = null;
try {
connection = DriverManager.getConnection(url);
String SPsql = "spUpdateProduct ?,?,?,?";
PreparedStatement ps = connection.prepareStatement(SPsql);
ps.setEscapeProcessing(true);
ps.setInt(0, p.getProductId());
ps.setString(1,p.getProductName());
ps.setDouble(2, p.getPrice());
ps.setInt(3,p.getQty());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally{
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}

}
}

最佳答案

参数索引从 1 开始,而不是 0:

    ps.setInt(1, p.getProductId());
ps.setString(2,p.getProductName());
ps.setDouble(3, p.getPrice());
ps.setInt(4,p.getQty());

关于java - 如何从java调用更新SqlTable值的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com