java-如何在不使用JDBC的情况下从数据库中检索结果集?

夜魔侠

我正在编写一个程序,它充当服务并从电子邮件队列表中提取电子邮件,处理它们并将它们发送出去。这是我如何做到的,它确实工作正常。

MySqlConnect con = new MySqlConnect();
public PreparedStatement preparedStatement = null;    
public Connection con1 = con.connect();

//pick up queue and send email
public void email() throws Exception {

    try {

        while(true) {

            String sql = "SELECT id,user,subject,recipient,content FROM emailqueue WHERE status='Pending' ";
            PreparedStatement statement = con1.prepareStatement(sql);
            ResultSet rs = statement.executeQuery();

            while (rs.next()) {

                String subject = rs.getString("subject");    
                String recipient = rs.getString("recipient");   
                String content = rs.getString("content");
                String id = rs.getString("id");
                String username = rs.getString("user");
                String emailStatus = "DONE";
                String errormsg = sendEmail(recipient, subject, content, id,username);

                if (!errormsg.equals("")) {
                    emailStatus = "FAILED";
                }

                TerminalLogger.printMsg("Status  : " + emailStatus);    
            }

            statement.close();
            rs.close();
        }

    } catch(Exception e) {
        e.printStackTrace();
        TerminalLogger.printMsg("Exception: "+e.toString());
    }

    con1.close();
    Thread.sleep(2000);    
}

现在,我清楚地使用JDBC获取循环中的结果集并如图所示处理它们。当然,我还需要在MySqlConnect.java属性中指定我的数据库连接虽然所有这些工作得很好,但我想知道是否有另一种方法可以在不使用 JDBC 的情况下实现相同的目标,即指定连接属性?

我在考虑 Java 持久性。我是新来的。

编辑

有人告诉我使用 JPA 来实现这一点,我是这样写的:

public void email() throws Exception {

    try {

        while(true) {

            String sql = "select p.id,p.user,p.subject,p.recipient,p.content from Emailqueue p where " +
                "status='Pending'";

            List<Object[]> list = em.createQuery(sql).getResultList();
            for (Object[] obj : list) {
                System.out.println(obj[0]);
                System.out.println(obj[1]);
                System.out.println(obj[2]);
                System.out.println(obj[3]);
                System.out.println(obj[4]);
            }         
        }

    } catch(Exception e) {
        e.printStackTrace();
        TerminalLogger.printMsg("Exception: " + e.toString());
    }

从这里开始,我会将我想要的参数传递给该方法。这种方式可行吗?

编辑 2

是否有点不同,如下所示:

String id = ejbCon.getSettingsFacade().getid();
String username = ejbCon.getSettingsFacade().getUser();
String subject = ejbCon.getSettingsFacade().getSubject();
String recipient = ejbCon.getSettingsFacade().getRecipient();
String content = ejbCon.getSettingsFacade().getContent();
String errormsg = sendEmail(recipient, subject, content, id,username);    

public String getContent() {
    try {
        String sql="Select content FROM emailqueue WHERE status='Pending'";
        if (em == null) {
            throw new Exception("could not found subject");
        }

        return (String) em.createNativeQuery(sql).getSingleResult();        

    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

只是稍微了解该方法的外观,其他方法遵循相同的概念。

尤甘什
   List<EmailQueue> emailList = em.createQuery(sql).getResultList();
        for (EmailQueue obj : emailList) {
              String emailStatus = "DONE";
              String errormsg=sendEmail(obj.getRecipient(), obj.getSubject, obj.getContent(),obj.getId(),obj.getUsername());
                    if (!errormsg.equals("")) {
                        emailStatus = "FAILED"
                    }
                    TerminalLogger.printMsg("Status  : " + emailStatus);
        }

    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用localhost的情况下使用Java与MySQL数据库连接

如何在不使用数据库工具的情况下检测 Java 应用程序中的连接泄漏/打开连接

如何在不使用BufferedReader的情况下从Java中的http get请求检索响应

在不使用关系数据库的情况下用Java存储和检索对象的简单方法?

如何在不使用过多内存的情况下用Java处理大型数据集

在不使用 Ajax 的情况下从数据库查询的 java-script 中的值发出警报

在不使用ODBC的情况下从Java操作Access数据库

在不使用PreparedStatement的情况下用Java清理数据库输入

如何在不使用Java的reduce方法的情况下获得相同的结果?

如何在不使用Java库和内置方法的情况下计算平方根?

如何在Java中不使用XMLHttpRequest的情况下将数据发送到服务器?

如何在不使用表单的情况下将数据从 JSP 页面传递到 Java Servlet?

在不使用Either的情况下如何在Java中执行此操作?

在Java 8中,如何在不使用forEach的情况下从Stream <int []>获取int数组

如何在不使用js的情况下将java中的json字符串化

如何在不使用.replace的情况下替换Java字符串中的单词

如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

如何在不使用java中的compare()方法的情况下进行选择排序?

如何在不使用IDE的情况下在Java中包含库

如何在不使用游标的情况下从数据库中检索一条特定记录?

如何在不使用第三方库的情况下转义Java字符串中的Unicode字符

在不使用任何给定库(例如Base64,AES等)的情况下,如何在Java中创建自己的字符串编码/解码或加密/解密脚本?

如何在没有来自java的用户的情况下以sysdba身份连接到oracle数据库?

如何在不更新整个行的情况下更改行中某个列的特定值Java Derby数据库

如何在不访问源代码的情况下从现有 Java 应用程序中检索实时数据?

如何在不使用for循环的情况下将几个列表中的每个项目映射到Java中的对象

如何在不使用@SpringBootApplication的情况下仅使用XML文件在Spring Boot Java中创建REST端点?

如何在不使用Java -jar的情况下运行Java可执行文件

如何在不使用多个查询的情况下更新数据库中的数据?