Android数据库问题

黑煤碳 2017-11-15 08:11:25
我写了一个登陆界面,然后在数据库查询的时候发现,我输入的用户名和密码和数据库里面的吻合,但是cursor.moveToFirst()一直是false



java代码
MySql
package com.example.denglu_d;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
*
* @author xml
* @deprecated 创建一个数据库并添加一条数据
*/
public class MySql extends SQLiteOpenHelper {

public MySql(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table QX(id integer primary key autoincrement ,user text ,passworld text)");
db.execSQL("insert into QX(user,passworld) values ('admin','123456')");
}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub

}

}


LoginActivity
package com.example.denglu_d;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import lib.SocketThread;
import lib.SysApplication;

public class LoginActivity extends Activity implements OnClickListener {

EditText edit_user;
EditText edit_pass;
Button btn_landing;
Button btn_esc;
MySql sql;
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
SysApplication.getInstance().addActivity(LoginActivity.this);

edit_pass = (EditText) findViewById(R.id.login_edit_pass);
edit_user = (EditText) findViewById(R.id.login_edit_user);
btn_esc = (Button) findViewById(R.id.login_btn_esc);
btn_landing = (Button) findViewById(R.id.login_btn_landing);
sql = new MySql(LoginActivity.this, "usb.db", null, 1);
btn_esc.setOnClickListener(this);
btn_landing.setOnClickListener(this);
}

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()) {
case R.id.login_btn_esc:

break;

case R.id.login_btn_landing:
db = sql.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from QX where user = ?",
new String[] { edit_user.getText().toString() });
Toast.makeText(LoginActivity.this, "" + cursor.moveToFirst(), Toast.LENGTH_SHORT).show();
break;
}
}

}


布局代码:
login_activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}"
android:background="@drawable/bg1">

<LinearLayout
android:id="@+id/login_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerInParent="true">

<LinearLayout
android:id="@+id/login_layout_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/login_text_user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_marginTop="10dp"
android:text="账号:"/>

<TextView
android:id="@+id/login_text_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_marginTop="20dp"
android:text="密码:"/>

</LinearLayout>

<LinearLayout
android:id="@+id/login_layout_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<EditText
android:id="@+id/login_edit_user"
android:layout_width="150dp"
android:layout_height="wrap_content"/>

<EditText
android:id="@+id/login_edit_pass"
android:layout_width="150dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"/>

</LinearLayout>

</LinearLayout>

<LinearLayout
android:id="@+id/login_layout_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/login_layout"
android:layout_centerHorizontal="true">

<Button
android:id="@+id/login_btn_landing"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="登陆"/>

<Button
android:id="@+id/login_btn_esc"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="取消"/>

</LinearLayout>

</RelativeLayout>
...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jing丶無雙 2018-04-19
  • 打赏
  • 举报
回复
引用 6 楼 qq_26074813 的回复:
2楼你还活着吗?
抱歉你要点引用我才能看到通知你回复我的消息,你问题现在解决没有啊??
黑煤碳 2017-11-17
  • 打赏
  • 举报
回复
2楼你还活着吗?
Jing丶無雙 2017-11-15
  • 打赏
  • 举报
回复
另外附上断点调试过程,我觉得你有可能在输入admin这一字符串时前后存在空格










Jing丶無雙 2017-11-15
  • 打赏
  • 举报
回复
我试下了下你的代码,cursor.moveToFirst()最终返回为true。另外我加了句cursor.getCount()得到的结果为1,说明确实存在。你可以留个邮箱么,我把我这个项目发给你
黑煤碳 2017-11-15
  • 打赏
  • 举报
回复
我的开发环境: eclipse和java8
黑煤碳 2017-11-15
  • 打赏
  • 举报
回复
2楼你能试试当我把mysql代码改成这样还能不能用

package com.example.denglu_d;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 
 * @author xml
 * @deprecated 创建一个数据库并添加一条数据
 */
public class MySql extends SQLiteOpenHelper {

	public MySql(Context context, String name, CursorFactory factory, int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		db.execSQL("create table QX(id integer primary key autoincrement ,user text ,passworld text,name,text,quanxian text)");
		db.execSQL("insert into QX(user,passworld,name,quanxian) values ('li','forpeople','DaKang','true')");
		db.execSQL("insert into QX(user,passworld,name,quanxian) values ('hou','justice','Monkey','true')");
	}

	@Override
	public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
		// TODO Auto-generated method stub

	}

}
黑煤碳 2017-11-15
  • 打赏
  • 举报
回复
我的QQ邮箱:936796603@qq.com

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧