簡體   English   中英

如何使用Java代碼將Object傳遞到SQL Server存儲過程?

[英]How can I pass Object to SQL server stored procedure using java code?

public class Student{
 protected String Name;
 Protected String Marks;
 public Student(String name, String marks){
  this.Name=name;
  this.Marks=marks;
 } 
 //getters and setters for above
}

在另一堂課上,我嘗試了以下

Student[] std=new Student[2];
std[0]=new Student("user1","80");
std[1]=new Student("user2","70");
String section = "A";

Connection conn=DriverManager.getConnection("jdbc:sqlserver://....");
CallableStatement stmt= conn.prepareCall("{Call UserDatils(?,?,?)}");
stmt.setString(2, section);
//stmt.setArray(3, std);
stmt.setObject(3, std);
stmt.registerOutParameter(1, java.sql,Types.VARCHAR);
stmt.execute();

這里的問題是下面兩行。

    //stmt.setArray(3, std);
stmt.setObject(3, std);

當我使用setObject運行以上命令時,它說:“不支持從UNKNOWN到UNKNOWN的轉換。

我無法設置此值。

請幫助我將上述學生信息傳遞給存儲過程。

謝謝。

首先,我將嘗試使用std [0]代替std。

通常,如果您需要將一個對象的值賦給另一個對象,則需要一個對象的getter和另一個對象的setter,這意味着您需要確切地知道這兩個對象的實例成員是什么,基本上需要知道這兩個對象參與。 類似地,在上述情況下,當您在setObject方法中傳遞Student對象時,JDBC不知道如何將Student對象轉換為sql對象。 JDBC具有一組為某些Java對象定義到相應sql類型的自定義映射。 請參閱docs: http : //docs.oracle.com/javase/1.5.0/docs/guide/jdbc/getstart/mapping.html

因此,無法直接從任何Java類型映射到sql類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM