草庐IT

java - 安卓应用 | MySQL 日志记录不工作

coder 2023-10-24 原文

我正在用 MySQL 制作一个安卓登录应用程序。我用两个扩展 AsyncTasc 的私有(private)类创建了一个 DatabaseHandler 类。

代码:

package me.martinwiesner.cpad;

import android.os.AsyncTask;
import android.support.annotation.Nullable;
import android.util.Log;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;

public class UserDatabaseHandler {
    private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DB_URL = "sql7.freemysqlhosting.net";

    private static final String USER = "**********";
    private static final String PASS = "**********";

    private static Get get;
    private static Set set;

    public static void onCreate() {
        get = new Get();
        set = new Set();
    }

    static List<User> getAllUsers() {
        return get.doInBackground(new String[]{""});
    }

    @Nullable
    static User getUser(String email) {
        for (User user : getAllUsers()) {
            if (user.getEmail().equals(email))
                return user;
        }
        return null;
    }

    @Nullable
    static User getUser(int id) {
        for (User user : getAllUsers()) {
            if (user.getId() == id)
                return user;
        }
        return null;
    }

    static void setAllUsers(List<User> users) {
        set.doInBackground(users);
    }

    static void addUser(User user) {
        List<User> users = getAllUsers();
        users.add(user);
        setAllUsers(users);
    }

    static User addUser(String name, String email, String password, boolean isAdmin) {
        Log.e("UDH", "Adding User");
        int id = 0;
        for (User user : getAllUsers()) {
            if (user.getId() != id) {
                break;
            } else {
                id++;
            }
        }
        User user = new User(id, name, email, password, isAdmin);
        addUser(user);
        return user;
    }

    private static class Get extends AsyncTask<String, Void, List<User>> {

        @Override
        protected List<User> doInBackground(String... strings) {
            Log.e("UDH", "Getting in Background");
            Connection connection = null;
            Statement statement = null;
            List<User> allUsers = new ArrayList<>();
            try {
                Log.e("UDH", "Getting in Background - Trying");
                Class.forName(JDBC_DRIVER);

                connection = DriverManager.getConnection(DB_URL, USER, PASS);

                statement = connection.createStatement();
                String sql = "SELECT * FROM users";
                ResultSet rs = statement.executeQuery(sql);

                while (rs.next()) {
                    int id = rs.getInt("ID");
                    String name = rs.getString("NAME");
                    String email = rs.getString("EMAIL");
                    String password = rs.getString("PASSWORD");
                    boolean isAdmin = rs.getBoolean("ISADMIN");

                    Log.e("Getting", id + "");
                    Log.e("Getting", name);
                    Log.e("Getting", email);
                    Log.e("Getting", password);
                    Log.e("Getting", isAdmin + "");

                    User user = new User(id, name, email, password, isAdmin);
                    allUsers.add(user);
                }
                rs.close();
                statement.close();
                connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (statement != null)
                        statement.close();
                } catch (SQLException se2) {
                }
                try {
                    if (connection != null)
                        connection.close();
                } catch (SQLException se) {
                    se.printStackTrace();
                }
            }
            return allUsers;
        }
    }

    private static class Set extends AsyncTask<List<User>, Void, String> {

        @Override
        protected String doInBackground(List<User>... users) {
            Log.e("UDH", "Setting in Background");
            Connection connection = null;
            Statement statement = null;

            for (User user : users[0]) {
                try {
                    connection = DriverManager.getConnection(DB_URL, USER, PASS);
                    statement = connection.createStatement();

                    String query = "INSERT INTO `users`(`ID`, `NAME`, `EMAIL`, `PASSWORD`, `ISADMIN`) VALUES ("
                            + user.getId() + "," + user.getName() + "," + user.getEmail() + "," + user.getPassword()
                            + "," + user.isAdmin() + ")";

                    ResultSet rs = statement.executeQuery(query);

                    rs.close();
                    connection.close();
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (statement != null)
                            statement.close();
                    } catch (SQLException se2) {
                    }
                    try {
                        if (connection != null)
                            connection.close();
                    } catch (SQLException se) {
                        se.printStackTrace();
                    }
                }
            }
            return "";
        }
    }
}

为了找出它不起作用的原因,我添加了以 Log.e 开头的行。 每次我写 Log.e 时它都会记录,但它不起作用。

问题

我该如何解决这个问题?

最佳答案

URL 错误,应该是:"jdbc:mysql://server:port/database"

关于java - 安卓应用 | MySQL 日志记录不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39314385/

有关java - 安卓应用 | MySQL 日志记录不工作的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  4. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  5. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  6. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  9. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  10. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

随机推荐