在Java对象编程中如何以最佳方式输入数据

在Java对象编程中如何以最佳方式输入数据,java,Java,只是想让你知道: 我知道如何使用扫描仪od BufferedReader,只是不知道在这种情况下在哪里使用它 我正在用Java开发我的第一个更大的应用程序。 (我不得不使用SQLite作为数据库) 这是某种健身应用程序,我将在其中添加我的训练(4个简单变量) 然后将其保存在DB中并进行排序以读取 我的问题是。。。 我应该如何添加来自用户的输入? 我有setter和getter,不知道应该在哪里添加这些输入。 在主课上?我应该建立一个新方法吗 package bazadanych; impor

只是想让你知道: 我知道如何使用扫描仪od BufferedReader,只是不知道在这种情况下在哪里使用它

我正在用Java开发我的第一个更大的应用程序。 (我不得不使用SQLite作为数据库) 这是某种健身应用程序,我将在其中添加我的训练(4个简单变量) 然后将其保存在DB中并进行排序以读取

我的问题是。。。 我应该如何添加来自用户的输入? 我有setter和getter,不知道应该在哪里添加这些输入。 在主课上?我应该建立一个新方法吗

 package bazadanych;

import java.util.List;
import java.util.Scanner;

    public class Main {

    public static void main(String[] args) {

     DBConnector d = new DBConnector();



     d.addWorkout( "bicek", 12, 5,22052019);

     List<Workout> workouts = d.allWorkouts();

     for (int i=0; i < workouts.size(); i++) {
    System.out.println("---------------------------------"); 
     System.out.println("The name of the excersise: " + workouts.get(i).getName());
     System.out.println(" Number of reps: " + workouts.get(i).getReps());
     System.out.println(" Weight: " + workouts.get(i).getWeight() + "kg");
     System.out.println("Date: " + workouts.get(i).getDate());
     System.out.println("---------------------------------");
     }
    }



package bazadanych;

public class Workout extends DBConnector {

    private int workoutId;
    private String name;
    private int reps;
    private int weight;
    private int date;

    public Workout(int workoutId, String name, int weight, int reps, int date)
    {
        setWorkoutId(workoutId);
        setName(name);
        setWeight(weight);
        setReps(reps);
        setDate(date);
    }

    // Getters
    public int getDate()
    {
        return date;
    }
    public int getWorkoutId()
    {
        return workoutId;   
    }
    public String getName()
    {
        return name;
    }

    public int getReps()
    {
        return reps;
    }
    public int getWeight()
    {
        return weight;
    }


    //Setters
    public void setDate(int date)
    {
        this.date = date;
    }
    public void setName(String name)
    {
        this.name = name;
    }
    public void setReps(int reps)
    {
        this.reps = reps;
    }
    public void setWorkoutId(int workoutId)
    {
        this.workoutId = workoutId;
    }
    public void setWeight(int weight)
    {
        this.weight = weight;
    }


}
bazadanych包装;
导入java.util.List;
导入java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
DBConnector d=新的DBConnector();
d、 addWorkout(“bicek”,12522052019);
列出训练=d.所有训练();
对于(int i=0;i

bazadanych包装;
导入java.sql.*;
导入java.util.LinkedList;
导入java.util.List;
公共类DBConnector{
//与数据库的连接
专用连接连接器;
//用于执行静态SQL语句并返回结果的对象
私人报表统计;
//构造
公共数据库连接器()
{
尝试
{
Class.forName(“org.sqlite.JDBC”);
}
catch(classnotfounde异常)
{
System.err.println(“没有JDBC驱动程序”);
e、 printStackTrace();
}
尝试
{
conn=DriverManager.getConnection(“jdbc:sqlite:GymApp.db”);//GymApp将是数据库的名称
stat=conn.createStatement();
}
捕获(SQLE异常)
{
System.err.println(“我无法连接”);
}
CreateStructure();
}
公共布尔CreateStructure()
{
//规则删除表并创建新的,当我们想返工列数等。
//String dropFirst=“如果存在训练,则丢弃表格;”;
String sql=“如果不存在训练,则创建表格”
+ "("
+WorkUtid整数主键自动递增
+“名称varchar(100),”
+“reps整数,”
+“权重整数,”
+“日期整数”
+ ")";
尝试
{
//stat.execute(dropFirst);
stat.execute(sql);
}
捕获(SQLE异常)
{
System.err.println(“结构创建时出现问题”);
e、 printStackTrace();
返回false;
}
返回true;
}
公共布尔值(字符串名称、整数代表、整数权重、整数日期)
{String sql=“插入到训练值中(Null、、、、、;”;
尝试
(PreparedStatement pStmt=conn.prepareStatement(sql)){
pStmt.setString(1,名称);
pStmt.setInt(2个,重复);
pStmt.setInt(3,重量);
pStmt.setInt(4,日期);
pStmt.execute();
}
捕获(SQLE异常)
{
System.err.println(“无法添加新联系人”);
e、 printStackTrace();
返回false;
}
返回true;
}
公开列出所有训练()
{
列表训练=新建LinkedList();
试一试{
ResultSet show=stat.executeQuery(“按日期从训练顺序中选择*);
int-id;
字符串名;
杰出代表;
整数权重;
国际日期;
while(show.next())
{
id=show.getInt(“workoutId”);
name=show.getString(“name”);
reps=show.getInt(“reps”);
权重=show.getInt(“权重”);
日期=show.getInt(“日期”);
训练。添加(新训练(id、姓名、重复次数、体重、日期));
}
}
捕获(SQLE异常)
{
e、 printStackTrace();
返回null;
}
返回训练;
}
公共连接(){
试一试{
康涅狄格州关闭();
}
捕获(SQLE异常){
System.err.println(“存在连接关闭错误”);
e、 printStackTrace();
}
}
}

要回答您的主要问题,您应该在
package bazadanych;


import java.sql.*;
import java.util.LinkedList;
import java.util.List;
public class DBConnector {

    // connection with datebase

    private Connection conn;

    // The object used to execute a static SQL statement and returning the results
    private Statement stat;


    // Construct

    public DBConnector()
    {

        try
        {
            Class.forName("org.sqlite.JDBC");
        }
            catch (ClassNotFoundException e)
            {
                System.err.println("There is no JDBC driver");
                e.printStackTrace();
            }
        try 
        {

            conn = DriverManager.getConnection("jdbc:sqlite:GymApp.db"); // GymApp will be the name of the datebase
            stat = conn.createStatement();
        }
            catch (SQLException e)
        {
                System.err.println("I can not connect");
        }

        CreateStructure();

    }

    public boolean CreateStructure()
    {

        // Rule to delete the table and create new, when we want to rework number of columnes etc.
         // String dropFirst = "DROP TABLE IF EXISTS workouts;";


        String sql = "CREATE TABLE IF NOT EXISTS workouts"
                + "("
                + "workoutId INTEGER PRIMARY KEY AUTOINCREMENT,"
                + "name varchar(100),"
                + "reps INTEGER, "
                + " weight INTEGER,"
                + " date INTEGER"
                + ")";
        try
        {
            // stat.execute(dropFirst);

            stat.execute(sql);

        }
        catch (SQLException e)
        {
            System.err.println("There is a problem by Structure creation");
            e.printStackTrace();
            return false;
        }
        return true;
    }


    public boolean addWorkout( String name, int reps, int weight, int date)
    {   String sql = " insert into workouts values (Null,?,?,?,?);";
        try
            (PreparedStatement pStmt = conn.prepareStatement(sql)){
            pStmt.setString(1, name);
            pStmt.setInt(2,reps);
            pStmt.setInt(3,weight);
            pStmt.setInt(4, date);
            pStmt.execute();
        }
        catch(SQLException e)
        {
            System.err.println("Can not add a new contact");
            e.printStackTrace();
            return false;
        }
        return true;
    }

    public List<Workout> allWorkouts()
    {
        List<Workout> workouts = new LinkedList<Workout>();

        try {
            ResultSet show = stat.executeQuery("SELECT * FROM workouts ORDER BY date");
            int id;
            String name;
            int reps;
            int weight;
            int date;

            while (show.next())
            {
                id = show.getInt("workoutId");
                name = show.getString("name");
                reps = show.getInt("reps");
                weight = show.getInt("weight");
                date = show.getInt("date");

                workouts.add(new Workout(id, name,reps,weight,date));
            }
        }
            catch (SQLException e)
            {
                e.printStackTrace();
                return null;

            }
            return workouts;    
    }

    public void closeConnection() {
        try{
            conn.close();
        }
        catch (SQLException e) {
            System.err.println("There is connection closing error");
            e.printStackTrace();
        }
    }
}
public static void main(String[] args) {
  DBConnector d = new DBConnector();

  // Retrieve input from the user
  Scanner sc = new Scanner(System.in);
  String name = sc.nextLine();
  int reps = sc.nextInt();
  int weight = sc.nextInt();
  // create the workout with the data
  d.addWorkout( name, reps, weight, LocalDate.now().toEpochDay());
  List<Workout> workouts = d.allWorkouts();
  // print workouts
}