Java Android应用程序| MySQL日志记录不工作
我正在用MySQL制作一个android登录应用程序。我创建了一个DatabaseHandler类,其中包含两个扩展AsyncTasc的私有类 守则:Java Android应用程序| MySQL日志记录不工作,java,android,mysql,Java,Android,Mysql,我正在用MySQL制作一个android登录应用程序。我创建了一个DatabaseHandler类,其中包含两个扩展AsyncTasc的私有类 守则: package me.martinwiesner.cpad; import android.os.AsyncTask; import android.support.annotation.Nullable; import android.util.Log; import java.sql.*; import java.util.ArrayLi
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 "";
}
}
}
package me.martinwiesner.cpad;
导入android.os.AsyncTask;
导入android.support.annotation.Nullable;
导入android.util.Log;
导入java.sql.*;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.concurrent.ExecutionException;
公共类UserDatabaseHandler{
私有静态最终字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”;
私有静态最终字符串DB_URL=“sql7.freemysqlhosting.net”;
私有静态最终字符串USER=“**********”;
私有静态最终字符串传递=“**********”;
私有静态获取;
私有静态集;
公共静态void onCreate(){
get=新get();
集合=新集合();
}
静态列表getAllUsers(){
返回get.doInBackground(新字符串[]{”“});
}
@可空
静态用户getUser(字符串电子邮件){
for(用户:getAllUsers()){
if(user.getEmail().equals(email))
返回用户;
}
返回null;
}
@可空
静态用户getUser(int-id){
for(用户:getAllUsers()){
if(user.getId()==id)
返回用户;
}
返回null;
}
静态无效设置用户(列出用户){
set.doInBackground(用户);
}
静态void addUser(用户){
列表用户=getAllUsers();
用户。添加(用户);
设置用户(用户);
}
静态用户addUser(字符串名称、字符串电子邮件、字符串密码、布尔值isAdmin){
Log.e(“UDH”,“添加用户”);
int id=0;
for(用户:getAllUsers()){
if(user.getId()!=id){
打破
}否则{
id++;
}
}
用户=新用户(id、名称、电子邮件、密码、isAdmin);
addUser(用户);
返回用户;
}
私有静态类Get扩展异步任务{
@凌驾
受保护列表doInBackground(字符串…字符串){
Log.e(“UDH”,“进入后台”);
连接=空;
Statement=null;
List alluser=new ArrayList();
试一试{
Log.e(“UDH”,“进入后台-尝试”);
类forName(JDBC_驱动程序);
connection=DriverManager.getConnection(DB_URL,USER,PASS);
statement=connection.createStatement();
String sql=“选择*来自用户”;
ResultSet rs=语句.executeQuery(sql);
while(rs.next()){
int id=rs.getInt(“id”);
字符串名称=rs.getString(“名称”);
String email=rs.getString(“电子邮件”);
字符串密码=rs.getString(“密码”);
布尔值isAdmin=rs.getBoolean(“isAdmin”);
Log.e(“获取”,id+);
Log.e(“获取”,名称);
Log.e(“获取”,电子邮件);
Log.e(“获取”,密码);
Log.e(“get”,isAdmin+);
用户=新用户(id、名称、电子邮件、密码、isAdmin);
添加(用户);
}
rs.close();
语句。close();
connection.close();
}捕获(SQLSE异常){
se.printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}最后{
试一试{
if(语句!=null)
语句。close();
}捕获(SQLException se2){
}
试一试{
if(连接!=null)
connection.close();
}捕获(SQLSE异常){
se.printStackTrace();
}
}
回归诱惑;
}
}
私有静态类集扩展异步任务{
@凌驾
受保护字符串doInBackground(列表…用户){
Log.e(“UDH”,“背景设置”);
连接=空;
Statement=null;
for(用户:用户[0]){
试一试{
connection=DriverManager.getConnection(DB_URL,USER,PASS);
statement=connection.createStatement();
String query=“插入`users`(`ID`、`NAME`、`EMAIL`、`PASSWORD`、`ISADMIN`)值(”
+user.getId()+”、“+user.getName()+”、“+user.getEmail()+”、“+user.getPassword()
+“,“+user.isAdmin()+”;
ResultSet rs=语句.executeQuery(查询);
rs.close();
connection.close();
语句。close();
}捕获(SQLE异常){
e、 printStackTrace();
}最后{
试一试{
if(语句!=null)
语句。close();
}捕获(SQLException se2){
}
试一试{
if(连接!=null)
connection.close();
}捕获(SQLSE异常){
se.printStackTrace();
}
}
}
返回“”;
}
}
}
为了找出它不起作用的原因,我添加了以Log.e
开头的行。
每次我写Log.e
,它都会记录,但它不起作用
问题
如何修复此问题?URL错误,应该是:“jdbc:mysql://server:port/database“请告诉我们什么不起作用。你试过迈步吗