Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要该方法返回select查询中的所有值_Java_Mysql_Return Type - Fatal编程技术网

Java 我需要该方法返回select查询中的所有值

Java 我需要该方法返回select查询中的所有值,java,mysql,return-type,Java,Mysql,Return Type,我的项目需要我从mySQL数据库中检索数据。该方法包含在一个类中,该类包含我的java程序的数十个其他数据库访问方法。计划是从需要数据库数据的任何其他类调用此方法。问题是在java中,您只能返回一种数据类型,但我需要从获取的元组中获取所有数据 让我的方法返回(在另一个调用此方法的类中)查询中的所有数据的最佳方法是什么 下面是代码片段: // SELECT QUERIES public void select_H_Customer_Table(int get_intCustomerID) {

我的项目需要我从mySQL数据库中检索数据。该方法包含在一个类中,该类包含我的java程序的数十个其他数据库访问方法。计划是从需要数据库数据的任何其他类调用此方法。问题是在java中,您只能返回一种数据类型,但我需要从获取的元组中获取所有数据

让我的方法返回(在另一个调用此方法的类中)查询中的所有数据的最佳方法是什么

下面是代码片段:

// SELECT QUERIES 
public void select_H_Customer_Table(int get_intCustomerID) { 
  int intCustomerID = get_intCustomerID; 
  sql = "SELECT intCustomerID, vachCustomerTitle, vachCustomerFirstName, vachCustomerSurnames, dteCustomerDOB, vachCustomerAddressStreet, vachCustomerAddressTown, vachCustomerAddressCounty, vachCustomerAddressPostalCode, intCustomerHomePhone, intCustomerWorkPhone, intCustomerMobilePhone, vachCustomerEmail FROM h_customers " + "WHERE" + " intCustomerID=?"; 
   try {
     st.setInt(1, intCustomerID); 
     rs = st.executeQuery(); 
     while (rs.next()){ 
       int rs_intCustomerID = rs.getInt("intCustomerID"); 
       String rs_vachCustomerTitle = rs.getString("vachCustomerTitle");            
       String rs_vachCustomerFirstName = rs.getString("vachCustomerFirstName"); 
       String rs_vachCustomerSurnames = rs.getString("vachCustomerSurnames"); 
       String rs_dteCustomerDOB = rs.getString("dteCustomerDOB"); 
       String rs_vachCustomerAddressStreet = rs.getString("vachCustomerAddressStreet"); 
       String rs_vachCustomerAddressTown = rs.getString("vachCustomerAddressTown"); 
       String rs_vachCustomerAddressCounty = rs.getString("vachCustomerAddressCounty"); 
       String rs_vachCustomerAddressPostalCode = rs.getString("vachCustomerAddressPostalCode"); 
       int rs_intCustomerHomePhone = rs.getInt("intCustomerHomePhone"); 
       int rs_intCustomerWorkPhone = rs.getInt("intCustomerWorkPhone"); 
       int rs_intCustomerMobilePhone = rs.getInt("intCustomerMobilePhone");
       String rs_txtCustomerEmail = rs.getString("txtCustomerEmail"); 
    } 
  } catch (SQLException e) { 
    // TODO Auto-generated catch block e.printStackTrace(); 
  } 
 }
创建一个pojo(实体类)并使用select*查询。获得结果集后,创建pojo对象并填充字段并返回

public class MyData{
   private String name;
   private String desc;
   //constructor or setter getter
}
一旦有了结果集,就可以使用字段创建
newmydata()

MyData data = null;
while(resultSet.next()){
  data = new MyData(resultSet.getString("NAME"), resultSet.getString("DESC"));
}
return data;
像这样的东西!!! 如果有很多字段,我更喜欢setter和getter,而不是参数化构造函数创建pojo(实体类)并使用select*查询。获得结果集后,创建pojo对象并填充字段并返回

public class MyData{
   private String name;
   private String desc;
   //constructor or setter getter
}
一旦有了结果集,就可以使用字段创建
newmydata()

MyData data = null;
while(resultSet.next()){
  data = new MyData(resultSet.getString("NAME"), resultSet.getString("DESC"));
}
return data;
像这样的东西!!!
如果您有很多字段,我更喜欢setter和getter,而不是参数化构造函数

您必须创建一个
Customer
类,并且查询方法必须返回一个
Customer

对象客户应该是:

class客户{
公共客户(){};
私有int-iD;
私有字符串标题;
私有字符串名;
私家姓氏;
私有字符串dOB;
私家街;;
私人城镇;
私家县;
专用字符串地址PostalCode;
私人家庭电话;
专用int工作电话;
私人移动电话;
私有字符串customerEmail;
//生成getter和setter
}

查询方法应为:

public Customer getCustomerById(int customerID) {

    String sql = "SELECT intCustomerID, vachCustomerTitle, vachCustomerFirstName, vachCustomerSurnames, dteCustomerDOB, vachCustomerAddressStreet, vachCustomerAddressTown, vachCustomerAddressCounty, vachCustomerAddressPostalCode, intCustomerHomePhone, intCustomerWorkPhone, intCustomerMobilePhone, vachCustomerEmail FROM h_customers " + "WHERE" + " intCustomerID=?"; 
    try { 
        st.setInt(1, customerID); 
        rs = st.executeQuery(); 
        while (rs.next()){ 
            Customer customer = new Customer();
            customer.setId(rs.getInt("intCustomerID")); 
            customer.setTitle(rs.getString("vachCustomerTitle")); 
            customer.setFirstName(rs.getString("vachCustomerFirstName")); 
            //...
            return customer;
        } 
    } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
        return null;
    } finally {
        if(rs != null) {
            rs.close();
        }
    }
}

您必须创建一个
Customer
类,查询方法必须返回一个
Customer

对象客户应该是:

class客户{
公共客户(){};
私有int-iD;
私有字符串标题;
私有字符串名;
私家姓氏;
私有字符串dOB;
私家街;;
私人城镇;
私家县;
专用字符串地址PostalCode;
私人家庭电话;
专用int工作电话;
私人移动电话;
私有字符串customerEmail;
//生成getter和setter
}

查询方法应为:

public Customer getCustomerById(int customerID) {

    String sql = "SELECT intCustomerID, vachCustomerTitle, vachCustomerFirstName, vachCustomerSurnames, dteCustomerDOB, vachCustomerAddressStreet, vachCustomerAddressTown, vachCustomerAddressCounty, vachCustomerAddressPostalCode, intCustomerHomePhone, intCustomerWorkPhone, intCustomerMobilePhone, vachCustomerEmail FROM h_customers " + "WHERE" + " intCustomerID=?"; 
    try { 
        st.setInt(1, customerID); 
        rs = st.executeQuery(); 
        while (rs.next()){ 
            Customer customer = new Customer();
            customer.setId(rs.getInt("intCustomerID")); 
            customer.setTitle(rs.getString("vachCustomerTitle")); 
            customer.setFirstName(rs.getString("vachCustomerFirstName")); 
            //...
            return customer;
        } 
    } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
        return null;
    } finally {
        if(rs != null) {
            rs.close();
        }
    }
}

您只说了“您只能返回一种数据类型”。让该数据类型成为您的自定义对象。创建您自己的类来包装从数据库获取的内容并返回该对象。在某些情况下,您可以使用列名称作为键、相应列值作为映射值的映射对象。请重新格式化代码段,使其不仅仅是1000个字符的注释。标记编辑器具有代码格式,因此您可以轻松地将其整齐显示。您只需说“您只能返回一种数据类型”。让该数据类型成为您的自定义对象。创建您自己的类来包装从数据库获取的内容并返回该对象。在某些情况下,您可以使用列名称作为键、相应列值作为映射值的映射对象。请重新格式化代码段,使其不仅仅是1000个字符的注释。markdown编辑器具有代码格式,因此您可以方便地将其整齐地显示。Yi:“pojo”表示普通的旧Java对象pojo是外部类还是嵌套类?取决于您希望如何使用它。如果您想在其他类中也使用它,那么将其作为一个单独的公共类fyi:“pojo”代表普通的旧Java对象pojo应该是外部类还是嵌套类?取决于您想如何使用它。如果您想在其他类中也使用它,那么将其作为一个单独的公共类。该方法将客户ID作为参数,因此不需要返回客户对象列表。但我建议将方法的名称改为
publiccustomer getcustomerbyd(int-customerId)
您是对的。我对最初的方法名感到困惑。谢谢感谢Diego&@shikjohari的帮助,请问我将如何检索返回的数据并将其分配给变量,我应该使用列表还是数组?最好使用列表,因为使用动态内存,您不需要知道列表的大小。该方法将客户ID作为参数,因此,不需要返回客户对象列表。但我建议将方法的名称改为
publiccustomer getcustomerbyd(int-customerId)
您是对的。我对最初的方法名感到困惑。谢谢感谢Diego&@shikjohari的帮助,请问我将如何检索返回的数据并将其分配给变量,我应该使用列表还是数组?最好使用列表,因为使用动态内存,您不需要知道列表的大小。