我尝试使用 ArrayList 将数据插入数据库。出现错误消息。 这是我的 Custmer.class 方法。这就是我将 ArrayList 传递到另一个类时得到的结果。
incompatible types: ArrayList<String> cannot be converted to ArrayList<Inquiries>
我想知道如何使用正确的 OOP 概念来做到这一点
public void passingMsg(ArrayList<Inquiries> arrlist){
try {
System.out.println("Method "+arrlist);
String sq = "INSERT INTO Inquiries (name,mail,tp,msg)VALUES(?,?,?)";
PreparedStatement pr = con.prepareStatement(sq);
for(int i=0;i<arrlist.size();i++){
pr.setString(1,arrlist.get(i).getName());
pr.setString(2,arrlist.get(i).getMail());
pr.setString(3,arrlist.get(i).getTp());
pr.setString(4,arrlist.get(i).getMsg());
}
pr.executeQuery();//executeBatch();
} catch (SQLException ex) {
}
}
这就是我从用户那里获取值的方式
String name = txtName.getText();
String mail = txtEmail.getText();
String tp = txtTp.getText();
String msg = txtMsg.getText();
ArrayList<String> arrInq = new ArrayList<String>();
arrInq.add(name);
arrInq.add(mail);
arrInq.add(tp);
arrInq.add(msg);
Custmer c =new Custmer();
if( c.passingMsg(arrInq)){
try {
JOptionPane.showMessageDialog(this, "Successs!!");
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Unsuccesss!!");
e.printStackTrace();
}
}
这是我的 Inquiries.class :
public class Inquiries {
private String name;
private String mail;
private String tp;
private String msg;
public Inquiries(String name,String mail,String tp,String msg){
this.name = name;
this.mail = mail;
this.tp = tp;
this.msg = msg;
}
//
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getTp() {
return tp;
}
public void setTp(String tp) {
this.tp = tp;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
有人可以解释一下这有什么问题吗?请问?
最佳答案
错误原因
这只是告诉您您的类型与您尝试执行的操作不兼容。在您的passingMsg()方法中,您的 header 为: public void passingMsg(ArrayList<Inquiries> arrlist)
。但是,在“我如何从用户获取值”区域(我现在将其称为“第二个片段”)内,您的方法调用声明为:if( c.passingMsg(arrInq))
。这意味着您暗示正在传递您的参数, arrInq
在本例中,类型为 ArrayList<Inquiries>
,但事实并非如此。它在您的第二个片段中初始化为: ArrayList<String> arrInq = new ArrayList<String>();
简单修复
我对此代码不承担任何责任;使用风险由您自行承担。要解决此问题,您需要将整个第二个片段更改为类似于以下内容的内容:
String name = txtName.getText();
String mail = txtEmail.getText();
String tp = txtTp.getText();
String msg = txtMsg.getText();
ArrayList<Inquiries> arrInq = new ArrayList<Inquiries>();
arrInq.add(new Inquiries(name, mail, tp, msg));
Custmer c = new Custmer();
try {
c.passingMsg(arrInq);
JOptionPane.showMessageDialog(this, "Successs!!");
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Unsuccesss!!");
e.printStackTrace();
}
您还需要更改方法头以返回 boolean 值,或者稍微修复它以实际抛出异常。如:
public void passingMsg(ArrayList<Inquiries> arrlist) {
System.out.println("Method " + arrlist);
String sq = "INSERT INTO Inquiries(name,mail,tp,msg) VALUES(?,?,?)";
PreparedStatement pr = con.prepareStatement(sq);
for (Inquiries inquiries : arrlist) {
pr.setString(1, inquiries.getName());
pr.setString(2, inquiries.getMail());
pr.setString(3, inquiries.getTp());
pr.setString(4, inquiries.getMsg());
}
pr.executeQuery();//executeBatch();
}
关于java - 如何将ArrayList数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551415/