如何使用javafx将select(jdbc)与prepared语句一起使用
我有一个jdbc代码,我想使用prepared语句和javaFX从数据库中选择数据。我的意思是我想使用JavaFX来获取字符串部分。这是我的数据访问代码,但我不知道如何使用参数编写控制器方法以及如何迭代列表如何使用javafx将select(jdbc)与prepared语句一起使用,select,jdbc,javafx,prepared-statement,Select,Jdbc,Javafx,Prepared Statement,我有一个jdbc代码,我想使用prepared语句和javaFX从数据库中选择数据。我的意思是我想使用JavaFX来获取字符串部分。这是我的数据访问代码,但我不知道如何使用参数编写控制器方法以及如何迭代列表 public ArrayList selectByNameAndFamily(Person person) throws Exception { preparedStatement = connection.prepareStatement("select * from
public ArrayList selectByNameAndFamily(Person person) throws Exception {
preparedStatement = connection.prepareStatement("select * from person where name = ? and family = ?");
preparedStatement.setString(1,person.getName());
preparedStatement.setString(2,person.getFamily());
ResultSet resultSet = preparedStatement.executeQuery();
ArrayList<Person> list = new ArrayList<>();
while (resultSet.next()) {
person.setPhone(resultSet.getLong("phone"));
person.setId(resultSet.getLong("id"));
person.setPlaque(resultSet.getLong("plaque"));
person.setUnit(resultSet.getLong("unit"));
person.setName(resultSet.getString("name"));
person.setFamily(resultSet.getString("family"));
person.setAddress1(resultSet.getString("Address1"));
person.setAddress2(resultSet.getString("address2"));
person.setAddress3(resultSet.getString("address3"));
list.add(person);
}
return list;
public ArrayList selectByNameAndFamily(Person)引发异常{
preparedStatement=connection.prepareStatement(“从姓名=?和家庭=?”的人员中选择*”;
preparedStatement.setString(1,person.getName());
preparedStatement.setString(2,person.getFamily());
ResultSet ResultSet=preparedStatement.executeQuery();
ArrayList=新建ArrayList();
while(resultSet.next()){
person.setPhone(resultSet.getLong(“电话”));
person.setId(resultSet.getLong(“id”);
个人设置斑块(结果集getLong(“斑块”));
person.setUnit(resultSet.getLong(“单位”);
person.setName(resultSet.getString(“name”);
person.setFamily(resultSet.getString(“family”);
person.setAddress1(resultSet.getString(“Address1”);
person.setAddress2(resultSet.getString(“address2”);
person.setAddress3(resultSet.getString(“address3”);
列表。添加(人);
}
退货清单;
*注意我的表对象名是Person,我已经在代码中创建了PreparedStatement的对象。之后
Person person = new Person();
person.getName()和person.getFamily()将是什么?null?空字符串
因此preparedStatement.executeQuery()将找不到任何行,您将永远无法输入
while (resultSet.next())
之后
person.getName()和person.getFamily()将是什么?null?空字符串
因此preparedStatement.executeQuery()将找不到任何行,您将永远无法输入
while (resultSet.next())
我创建了这个。我的一些方法和变量与您的不同。此外,我使用SQLITE并创建了一个示例数据库。这不是javaFX问题,这是java问题
public static void main(String[] args) {
try
{
Class.forName("org.sqlite.JDBC");
Scanner input = new Scanner(System.in);
Person person = new Person();
System.out.println("Enter person name: ");
person.setName(input.nextLine());
System.out.println("Enter person family: ");
person.setFamilyName(input.nextLine());
ArrayList<Person> peopleFromDatabase = selectByNameAndFamily(person);
for(Person entry : peopleFromDatabase)
{
System.out.println("PERSON:");
System.out.println("\t" + entry.getName());
System.out.println("\t" + entry.getID());
System.out.println("\t" + entry.getFamilyName());
System.out.println("\t" + entry.getAddress1());
System.out.println();
}
}
catch (ClassNotFoundException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static ArrayList<Person> selectByNameAndFamily(Person person)
{
ArrayList<Person> list = new ArrayList();
String sql = "select * from person where name = ? and family_name = ?";
try(Connection con = DriverManager.getConnection("jdbc:sqlite:family.db");
PreparedStatement prestmt = con.prepareStatement(sql); )
{
prestmt.setString(1, person.getName());
prestmt.setString(2, person.getFamilyName());
ResultSet rs = prestmt.executeQuery();
while (rs.next()) {
Person returningPerson = new Person();
returningPerson.setID(rs.getLong("id"));
returningPerson.setName(rs.getString("name"));
returningPerson.setFamilyName(rs.getString("family_name"));
returningPerson.setPhone(rs.getString("phone"));
returningPerson.setPlaque(Long.parseLong(rs.getString("plaque")));
returningPerson.setUnit(Long.parseLong(rs.getString("unit")));
returningPerson.setAddress1(rs.getString("Address1"));
returningPerson.setAddress2(rs.getString("address2"));
returningPerson.setAddress3(rs.getString("address3"));
list.add(returningPerson);
}
}
catch (SQLException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
publicstaticvoidmain(字符串[]args){
尝试
{
Class.forName(“org.sqlite.JDBC”);
扫描仪输入=新扫描仪(System.in);
Person=新人();
System.out.println(“输入人名:”);
person.setName(input.nextLine());
System.out.println(“输入个人家庭:”;
person.setFamilyName(input.nextLine());
ArrayList peopleFromDatabase=按姓名和家庭(个人)选择;
for(个人输入:peopleFromDatabase)
{
System.out.println(“人:”);
System.out.println(“\t”+entry.getName());
System.out.println(“\t”+entry.getID());
System.out.println(“\t”+entry.getFamilyName());
System.out.println(“\t”+entry.getAddress1());
System.out.println();
}
}
捕获(ClassNotFoundException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE,null,ex);
}
}
公共静态数组列表selectByNameAndFamily(个人)
{
ArrayList=新建ArrayList();
String sql=“从姓名=?和姓氏=?”的人员中选择*;
try(Connection con=DriverManager.getConnection(“jdbc:sqlite:family.db”);
PreparedStatement prestmt=con.prepareStatement(sql);)
{
prestmt.setString(1,person.getName());
prestmt.setString(2,person.getFamilyName());
ResultSet rs=prestmt.executeQuery();
while(rs.next()){
人员返回人员=新人员();
returningPerson.setID(rs.getLong(“id”);
returningPerson.setName(rs.getString(“name”);
returningPerson.setFamilyName(rs.getString(“family_name”);
returningPerson.setPhone(rs.getString(“phone”);
returningPerson.setplate(Long.parseLong(rs.getString(“plate”));
returningPerson.setUnit(Long.parseLong(rs.getString(“unit”));
returningPerson.setAddress1(rs.getString(“Address1”);
returningPerson.setAddress2(rs.getString(“address2”);
returningPerson.setAddress3(rs.getString(“address3”);
列表。添加(返回人员);
}
}
catch(SQLException-ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE,null,ex);
}
退货清单;
}
我创建了这个。我的一些方法和变量与您的不同。此外,我使用了SQLITE并创建了一个示例数据库。这不是javaFX问题,这是java问题
public static void main(String[] args) {
try
{
Class.forName("org.sqlite.JDBC");
Scanner input = new Scanner(System.in);
Person person = new Person();
System.out.println("Enter person name: ");
person.setName(input.nextLine());
System.out.println("Enter person family: ");
person.setFamilyName(input.nextLine());
ArrayList<Person> peopleFromDatabase = selectByNameAndFamily(person);
for(Person entry : peopleFromDatabase)
{
System.out.println("PERSON:");
System.out.println("\t" + entry.getName());
System.out.println("\t" + entry.getID());
System.out.println("\t" + entry.getFamilyName());
System.out.println("\t" + entry.getAddress1());
System.out.println();
}
}
catch (ClassNotFoundException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static ArrayList<Person> selectByNameAndFamily(Person person)
{
ArrayList<Person> list = new ArrayList();
String sql = "select * from person where name = ? and family_name = ?";
try(Connection con = DriverManager.getConnection("jdbc:sqlite:family.db");
PreparedStatement prestmt = con.prepareStatement(sql); )
{
prestmt.setString(1, person.getName());
prestmt.setString(2, person.getFamilyName());
ResultSet rs = prestmt.executeQuery();
while (rs.next()) {
Person returningPerson = new Person();
returningPerson.setID(rs.getLong("id"));
returningPerson.setName(rs.getString("name"));
returningPerson.setFamilyName(rs.getString("family_name"));
returningPerson.setPhone(rs.getString("phone"));
returningPerson.setPlaque(Long.parseLong(rs.getString("plaque")));
returningPerson.setUnit(Long.parseLong(rs.getString("unit")));
returningPerson.setAddress1(rs.getString("Address1"));
returningPerson.setAddress2(rs.getString("address2"));
returningPerson.setAddress3(rs.getString("address3"));
list.add(returningPerson);
}
}
catch (SQLException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
publicstaticvoidmain(字符串[]args){
尝试
{
Class.forName(“org.sqlite.JDBC”);
扫描仪输入=新扫描仪(System.in);
Person=新人();
System.out.println(“输入人名:”);
person.setName(input.nextLine());
System.out.println(“输入个人家庭:”;
person.setFamilyName(input.nextLine());
ArrayList peopleFromDatabase=按姓名和家庭(个人)选择;
for(个人输入:peopleFromDatabase)
{
System.out.println(“人:”);
System.out.println(“\t”+entry.getName());
System.out.println(“\t”+entry.getID());
System.out.println(“\t”+entry.getFamilyName());
System.out.println(“\t”+entry.getAddress1());
System.out.println();
}
}
捕获(ClassNotFoundException ex)
{
Logger.getLogger(TestingGround.class.getName()).log(Level.SEVERE,null,ex);
}
}
公共静态数组列表selectByNameAndFamily(个人)
{
ArrayList=新建ArrayList();
String sql=“从姓名=?和姓氏=?”的人员中选择*;
try(Connection con=DriverManager.getConnection(“jdbc:sqlite:family.db”);
PreparedStatement prestmt=con.prepareStatement(sql);)
{
prestmt.setString(1,person.getName());
prestmt.setString(2,person.getFamilyName());
ResultSet rs=prestmt.exe