【问题标题】:Saving data using SQL on android在 Android 上使用 SQL 保存数据
【发布时间】:2017-06-26 00:50:14
【问题描述】:
public void createDatabase(){

        try {
            Class.forName("org.sqlite.JDBC").newInstance();

            Connection connection = DriverManager.getConnection("jdbc:sqlite:occDatabase.db");

            Statement statement = connection.createStatement();

            String sqlStatement = "CREATE TABLE 'Player_Data' (" +
                    "'userMoney' TEXT," +
                    "'oysters' TEXT," +
                    "'clams' TEXT," +
                    "'cockles' TEXT," +
                    "'oysterPrice' TEXT," +
                    "'clamPrice' TEXT," +
                    "'cocklePrice' TEXT," +
                    "'oysterMod' TEXT," +
                    "'clamMod' TEXT," +
                    "'cockleMod' TEXT," +
                    "'cartPrice' TEXT," +
                    "'fishStandPrice' TEXT," +
                    "'storePrice' TEXT," +
                    "'superMarketPrice' TEXT," +
                    "'cartAmount' TEXT," +
                    "'fishStandAmount' TEXT," +
                    "'storeAmount' TEXT," +
                    "'superMarketAmount' TEXT," +
                    ");";

            statement.execute(sqlStatement);
            connection.commit();
            statement.close();
            connection.close();



        } catch (Exception e){
        }
    }

    public void writeToDatabase(){
        try{

            clearData();

            createDatabase();

            Class.forName("org.sqlite.JDBC");

            Connection connection = DriverManager.getConnection("jdbc:sqlite:occDatabase.db");

            Statement statement = connection.createStatement();

            String sqlStatemnt = "INSERT INTO Player_Data(userMoney,oysters,clams,cockles,oysterPrice,clamPrice,cocklePrice,oysterMod,clamMod,cockleMod" +
                    ",cartPrice,fishStandPrice,storePrice,superMarketPrice,cartAmount,fishStandAmount,storeAmount,superMarketAmount) " +
                    "VALUES('" + MainActivity.userMoney + "', '"+ GatheringSystem.oysters +"', '" + GatheringSystem.clams +"', '" + GatheringSystem.cockles +"'," +
                    " '" + Modifiers.oysterPrice +"', '" + Modifiers.clamPrice +"', '" + Modifiers.cocklePrice  +"', '" + Modifiers.oysterMod +"', '" + Modifiers.clamMod +"', '" + Modifiers.cockleMod +
                    "', '" + MainActivity.cartPrice +"', '" + MainActivity.fishStandPrice +"', '" + MainActivity.storePrice +"', '" + MainActivity.superMarketPrice +"', '" + MainActivity.cartAmount +"'," +
                    " '" + MainActivity.fishStandAmount +"', '" + MainActivity.storeAmount +"', '" + MainActivity.superMarketAmount +"')";

            statement.execute(sqlStatemnt);
            connection.commit();
            statement.close();
            connection.close();


        }catch (Exception e){

        }
    }

    public void readFromDatabase(){

        Connection connection = null;
        Statement statement = null;

        try {

            Class.forName("org.sqlite.JDBC").newInstance();

            connection = DriverManager.getConnection("jdbc:sqlite:occDatabase.db");

            statement = connection.createStatement();

        } catch (Exception e){

        }

        try{

            ResultSet resultSet = statement.executeQuery("SELECT * FROM Player_Data");

            while (resultSet.next()){
                MainActivity.userMoney = Double.parseDouble(resultSet.getString("userMoney"));

                MainActivity.cartPrice = Double.parseDouble(resultSet.getString("cartPrice"));
                MainActivity.fishStandPrice = Double.parseDouble(resultSet.getString("fishStandPrice"));
                MainActivity.storePrice = Double.parseDouble(resultSet.getString("storePrice"));
                MainActivity.superMarketPrice = Double.parseDouble(resultSet.getString("superMarketPrice"));

                MainActivity.cartAmount = Integer.parseInt(resultSet.getString("cartAmount"));
                MainActivity.fishStandAmount = Integer.parseInt(resultSet.getString("fishStandAmount"));
                MainActivity.storeAmount = Integer.parseInt(resultSet.getString("storeAmount"));
                MainActivity.superMarketAmount = Integer.parseInt(resultSet.getString("superMarketAmount"));

                Modifiers.oysterPrice = Double.parseDouble(resultSet.getString("oysterPrice"));
                Modifiers.clamPrice = Double.parseDouble(resultSet.getString("clamPrice"));
                Modifiers.cocklePrice = Double.parseDouble(resultSet.getString("cocklePrice"));

                Modifiers.oysterMod = Double.parseDouble(resultSet.getString("oysterMod"));
                Modifiers.clamMod = Double.parseDouble(resultSet.getString("clamMod"));
                Modifiers.cockleMod = Double.parseDouble(resultSet.getString("cockleMod"));

                GatheringSystem.oysters = Double.parseDouble(resultSet.getString("oysters"));
                GatheringSystem.clams = Double.parseDouble(resultSet.getString("clams"));
                GatheringSystem.cockles = Double.parseDouble(resultSet.getString("cockles"));

            }

            resultSet.close();
            statement.close();
            connection.close();

            MainActivity.databaseStarted = true;
        } catch (Exception e){
            MainActivity.databaseStarted = false;
        }
    }

}

所以我对 android 编码真的很陌生,我正在尝试为我的游戏保存数据,这样当我回到游戏时,我可以从文件中读取。

目前它似乎根本没有创建“数据库”。

我需要授予它某些权限吗?还是可以在用户手机上自动创建文件?

private void databaseMethod(){

    database.readFromDatabase();

    if(!databaseStarted){
        database.createDatabase();
        toast = toast.makeText(getApplicationContext(),"Created Database",Toast.LENGTH_SHORT);
        toast.show();
    }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);
    distThread.setDaemon(true);
    distThread.start();
    databaseMethod();
    File file = new File(getFilesDir(), "occDatebase.db");
}

@Override
protected void onPause() {
    super.onPause();
    database.writeToDatabase();
    toast = toast.makeText(getApplicationContext(),"Game Saved",Toast.LENGTH_SHORT);
    toast.show();
}

在创建时,我检查是否已经有一个数据库,如果没有,它应该创建一个。

但它似乎并没有这样做。

有什么建议吗?

谢谢。

【问题讨论】:

标签: java android xml sqlite save


【解决方案1】:

Android 没有 JDBC。

并且所有try/except 块都禁止显示任何错误消息。

有关如何使用 Android 数据库框架,请参阅documentation 或任何教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多