java - 如何将ArrayList数据插入数据库

标签 java mysql oop jdbc compiler-errors

我尝试使用 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/

相关文章:

java - 我的 (Java/Swing) MouseListener 没有监听,请帮我找出原因

java - 在 JAXB 中编码时隐藏 XMLAttribute,而不将其设置为 null

php - 为什么这个 Zend 框架会占用我的 CPU 并加载页面如此之慢

MySQL - 主键是否需要 "NOT NULL"约束?

php - ServiceLocator 和开放/封闭原则

java - 如何为 BaseAdapter 中的不同项目制作进度条功能

java - 为什么java不在图中的JRE部分

mysql - 在子查询中重用联接表

java - 方法设计方法,其中方法采用可变数量的参数值

objective-c - 我应该在我自己的代码之后还是之前调用 [super superMethod]?