- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的数据库 Android 应用程序。当我在模拟器上调试或运行我的应用程序时,它工作正常(即它读取和写入数据库),但是当我在设备上运行它时,它无法读取和写入数据库。我想我必须更新我的 DatabaseHelper
类。谁能帮我吗...DatabaseHelper.java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.sush.myapp.data.model.UsersCredentials;
public class DatabaseHelper extends SQLiteOpenHelper {
// Logcat tag
//private static final String LOG = "DatabaseHelper";
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "DemoDB.db";
// Table Names
private static final String TABLE_USERS = "Users";
private static final String TABLE_SCORES = "Scores";
private static final String TABLE_SYNCSTATUS = "SyncStatus";
// Common column names
private static final String KEY_ID = "id";
private static final String KEY_CREATED_AT = "created_at";
// USERS Table - column names
private static final String KEY_USERID = "userID";
private static final String KEY_USERNAME = "userName";
private static final String KEY_USERPSWD = "userPswd";
private static final String KEY_FIRSTNAME = "firstName";
private static final String KEY_LASTNAME = "lastName";
private static final String KEY_USERTYPE = "userType";
// SCORES Table - column names
private static final String KEY_USER_ID = "userID";
private static final String KEY_GAME_ID = "gameID";
private static final String KEY_SCORES = "scores";
// SYNCSTATUS Table - column names
private static final String KEY_STATRDATE = "startDate";
private static final String KEY_ENDDATE = "endDate";
private static final String KEY_STATUS = "status";
// Table Create Statements
// USERS table create statement
private static final String CREATE_TABLE_USERS = "CREATE TABLE IF NOT EXISTS "
+ TABLE_USERS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_USERID
+ " TEXT," + KEY_USERNAME + " INTEGER," + KEY_USERPSWD + " TEXT,"
+ KEY_FIRSTNAME + " TEXT," + KEY_LASTNAME + " TEXT," + KEY_USERTYPE + " INTEGER,"
+ KEY_CREATED_AT + " DATETIME" + ")";
// Tag table create statement
private static final String CREATE_TABLE_SCORES = "CREATE TABLE IF NOT EXISTS "
+ TABLE_SCORES + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_USER_ID
+ " INTEGER," + KEY_GAME_ID + " INTEGER," + KEY_SCORES + " INTEGER,"
+ KEY_CREATED_AT + " DATETIME" + ")";
// todo_tag table create statement
private static final String CREATE_TABLE_SYNCSTATUS = "CREATE TABLE IF NOT EXISTS "
+ TABLE_SYNCSTATUS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_STATRDATE + " DATETIME," + KEY_ENDDATE + " DATETIME," + KEY_STATUS + " INTEGER,"
+ KEY_CREATED_AT + " DATETIME" + ")";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// creating required tables
db.execSQL(CREATE_TABLE_USERS);
db.execSQL(CREATE_TABLE_SCORES);
db.execSQL(CREATE_TABLE_SYNCSTATUS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// on upgrade drop older tables
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SCORES);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SYNCSTATUS);
// create new tables
onCreate(db);
}
//Validate user for login, Return true if correct username and password else return false.
public Cursor validateUserLogin(String uname, String pswd)
{
SQLiteDatabase db=this.getWritableDatabase();
String[] whereArgs = new String[]{uname, pswd};
String query = "SELECT "+KEY_USERID+", "+KEY_USERTYPE+" FROM "+TABLE_USERS+" WHERE "+KEY_USERNAME+" = ? AND "+KEY_USERPSWD+" = ?";
Cursor cur= db.rawQuery(query, whereArgs);
//Boolean b = cur.moveToFirst();
if (cur.moveToFirst() == true)
//return cur.getInt(cur.getColumnIndex(KEY_USERID));
return cur;
else
return null;
}
//To get user full name by passing userID.
public String getUserFullName(int uID)
{
SQLiteDatabase db=this.getWritableDatabase();
String[] whereArgs = new String[]{Integer.toString(uID)};
String query = "SELECT "+KEY_FIRSTNAME+" || ' ' || "+KEY_LASTNAME+" AS FullName FROM "+TABLE_USERS+" WHERE "+KEY_USERID+" = ?";
Cursor cur= db.rawQuery(query, whereArgs);
int index;
if (cur.moveToFirst() == true)
{
index= cur.getColumnIndex("FullName");
return cur.getString(index);
}
else
return "";
}
//********************** CRUD for Users Table **********************//
public void insertValues(UsersCredentials uc){
SQLiteDatabase db= this.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put(KEY_USERID, uc.getUserID());
cv.put(KEY_USERNAME, uc.getUserName());
cv.put(KEY_USERPSWD, uc.getUserPassword());
cv.put(KEY_FIRSTNAME, uc.getUserFirstName());
cv.put(KEY_LASTNAME, uc.getUserLastName());
cv.put(KEY_USERTYPE, uc.getUserType());
cv.put(KEY_CREATED_AT, getDateTime());
db.insert(TABLE_USERS, null, cv);
}
public void deleteRecords() {
SQLiteDatabase db= this.getWritableDatabase();
db.execSQL("delete from Users");
}
private String getDateTime() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy HH:mm:ss", Locale.getDefault());
Date date = new Date();
return dateFormat.format(date);
}
}
我在 HomeLoginActivity.java
中调用以下语句来创建数据库。
@SuppressWarnings("deprecation")
public class HomeLoginActivity extends ActivityGroup {
Button btnSinup;
EditText user_ID;
EditText user_pswd;
SQLiteDatabase db;
DatabaseHelper dbh;
Cursor cur;
String name;
Intent intent;
int uID, uType;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_login);
//statement to Create/Open DB
db = new DatabaseHelper(this).getWritableDatabase();
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
dbh = new DatabaseHelper(getApplicationContext());
user_ID = (EditText)findViewById(R.id.userID);
user_pswd = (EditText)findViewById(R.id.userPswd);
btnSinup =(Button)findViewById(R.id.btnLogin);
btnSinup.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
if (user_ID.getText().toString().equals(""))
{
Toast.makeText(v.getContext(), "Enter the user ID", Toast.LENGTH_SHORT).show();
}
else if (user_pswd.getText().toString().equals(""))
{
Toast.makeText(v.getContext(), "Enter the password", Toast.LENGTH_SHORT).show();
}
else
{
try{
cur = dbh.validateUserLogin(user_ID.getText().toString(), user_pswd.getText().toString());
if(cur != null)
{
startManagingCursor(cur);
if(cur.moveToFirst())
{
uID = cur.getInt(0);
//Toast.makeText(v.getContext(), "uID = "+uID, Toast.LENGTH_SHORT).show();
uType = cur.getInt(1);
//Toast.makeText(v.getContext(), "uType = "+uType, Toast.LENGTH_SHORT).show();
cur.close();
name = dbh.getUserFullName(uID);
if(uType == 3) //Goto Admin Home
{
//Toast.makeText(v.getContext(), "Name = "+name, Toast.LENGTH_SHORT).show();
Intent adminHome = new Intent(v.getContext(), HomeAdminActivity.class);
adminHome.putExtra("ID", uID);
adminHome.putExtra("userFullName", name);
replaceContentView("home_admin", adminHome);
}
else //Goto Users Home
{
//Toast.makeText(v.getContext(), "Name = "+name, Toast.LENGTH_SHORT).show();
Intent userHome = new Intent(v.getContext(), HomeUserActivity.class);
userHome.putExtra("ID", uID);
userHome.putExtra("userFullName", name);
replaceContentView("home_user", userHome);
}
}
else
{
Toast.makeText(v.getContext(), "User not found", Toast.LENGTH_SHORT).show();
cur.close();
}
}
else
{
Toast.makeText(v.getContext(), "Invalid username or password", Toast.LENGTH_SHORT).show();
cur.close();
}
}catch(Exception e){
//cur.close();
//Toast.makeText(v.getContext(), "Error = "+e, Toast.LENGTH_SHORT).show();
}
}
}
});
}
public void replaceContentView(String homeID, Intent homeIntent) {
View view = getLocalActivityManager().startActivity(homeID,homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView();
this.setContentView(view);
}
}
当我在模拟器上运行我的应用程序并尝试使用数据库中存在的 userDetails 登录时,它工作正常并登录,但是当我将 .apk
文件复制到设备后当我运行应用程序并尝试登录时安装显示无效的用户信息。
最佳答案
切换到 DDMS 视角并检查该位置是否存在数据库/data/data/YOUR_APP/databases/YOUR_DATABASEE.db
关于java - Android 数据库应用程序在模拟器上运行良好,但在设备上出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367753/
我的应用程序从一个有 5 个选项卡的选项卡栏 Controller 开始。一开始,第一个出现了它的名字,但其他四个没有名字,直到我点击它们。然后根据用户使用的语言显示名称。如何在选项卡栏出现之前设置选
我有嵌套数组 json 对象(第 1 层、第 2 层和第 3 层)。我的问题是数据表没有出现。任何相关的 CDN 均已导入。该表仅显示部分。我引用了很多网站,但都没有解决我的问题。 之前我使用标准表来
我正在尝试设置要显示的 Parse PFLoginViewController。这是我的一个 View Controller 的类。 import UIKit import Parse import
我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。 这是我的一些代码: public static void main(Strin
我有一个树状图,其中包含出现这样的词...... TreeMap occurrence = new TreeMap (); 字符串 = 单词 整数 = 出现次数。 我如何获得最大出现次数 - 整数,
因此,我提示用户输入变量。如果变量小于 0 且大于 10。如果用户输入 10,我想要求用户再次输入数字。我问时间的时候输入4,它说你输入错误。但在第二次尝试时效果很好。例如:如果我输入 25,它会打印
我已经用 css overflow 属性做了一个例子。在这个例子中我遇到了一个溢出滚动的问题。滚动条出现了,但没有工作意味着每当将光标移动到滚动条时,在这个滚动条不活动的时间。我对此一无所知,所以请帮
我现在正在做一个元素。当您单击一个元素时,会出现以下信息,我想知道如何在您单击下一个元素而不重新单击同一元素时使其消失....例如,我的元素中有披萨,我想单击肉披萨看到浇头然后点击奶酪披萨看到浇头和肉
我有一个路由器模块,它将主题与正则表达式进行比较,并将出现的事件与一致的键掩码链接起来。 (它是一个简单的 url 路由过滤,如 symfony http://symfony.com/doc/curr
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: mysql_fetch_array() expects parameter 1 to be resource, bo
我在底部有一个带有工具栏的 View ,我正在使用 NavigationLink 导航到该 View 。但是当 View 出现时,工具栏显示得有点太低了。大约半秒钟后,它突然跳到位。它只会在应用程序启
我试图在我的应用程序上为背景音乐添加一个 AVAudioPlayer,我正在主屏幕上启动播放器,尝试在应用程序打开时开始播放但出现意外行为... 它播放并立即不断创建新玩家并播放这些玩家,因此同时播放
这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感
暂停期间抛出异常 android.os.DeadObjectException 在 android.os.BinderProxy.transactNative( native 方法) 在 androi
我已经为猜词游戏编写了一些代码。它从用户输入中读取字符并在单词中搜索该字符;根据字符是否在单词中,程序返回并控制一些变量。 代码如下: import java.util.Random; import
我是自动化领域的新手。这是我的简单 TestNG 登录代码,当我以 TestNG 身份运行该代码时,它会出现 java.lang.NullPointerException,双击它会突出显示我导航到 U
我是c#程序员,我习惯了c#的封装语法和其他东西。但是现在,由于某些原因,我应该用java写一些东西,我现在正在练习java一天!我要创建一个为我自己创建一个虚拟项目,以便让自己更熟悉 Java 的
我正在使用 Intellij,我的源类是 main.com.coding,我的资源文件是 main.com.testing。我将 spring.xml 文件放入资源文件中。 我的测试类位于 test.
我想要我的tests folder separate到我的应用程序代码。我的项目结构是这样的 myproject/ myproject/ myproject.py moduleon
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 6 年前。 因此,我尝试比较 2 个值,一个
我是一名优秀的程序员,十分优秀!