Java 我需要该方法返回select查询中的所有值
我的项目需要我从mySQL数据库中检索数据。该方法包含在一个类中,该类包含我的java程序的数十个其他数据库访问方法。计划是从需要数据库数据的任何其他类调用此方法。问题是在java中,您只能返回一种数据类型,但我需要从获取的元组中获取所有数据 让我的方法返回(在另一个调用此方法的类中)查询中的所有数据的最佳方法是什么 下面是代码片段:Java 我需要该方法返回select查询中的所有值,java,mysql,return-type,Java,Mysql,Return Type,我的项目需要我从mySQL数据库中检索数据。该方法包含在一个类中,该类包含我的java程序的数十个其他数据库访问方法。计划是从需要数据库数据的任何其他类调用此方法。问题是在java中,您只能返回一种数据类型,但我需要从获取的元组中获取所有数据 让我的方法返回(在另一个调用此方法的类中)查询中的所有数据的最佳方法是什么 下面是代码片段: // SELECT QUERIES public void select_H_Customer_Table(int get_intCustomerID) {
// 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的帮助,请问我将如何检索返回的数据并将其分配给变量,我应该使用列表还是数组?最好使用列表,因为使用动态内存,您不需要知道列表的大小。