android-安卓sqlite的问题,不能点注册按钮,点了就出错。

问题描述

安卓sqlite的问题,不能点注册按钮,点了就出错。
安卓sqlite的问题,不能点注册按钮,点了就出错。然后控制台那边提示说是such no table,网上也查找过解决办法,说是把路径定死,可惜不知道哪里写合适,或者试了也不行?

注册java的代码
import java.io.File;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.RadioButton;

public class ZhuceActivity extends Activity {
private EditText edityhmedityhmmedityhxmedityhsfzedityhdhedityhyx;
private RadioButton rdmanrdwomen;
private RadioGroup rdgroup;
private Button yhzhuce;
private Button yhfanhui;
SQLiteDatabase db;
// 声明一个变量zhuceOK。布尔类型
private boolean zhuceok = false;
Handler handler;

     @Override          protected void onDestroy() {              // TODO Auto-generated method stub              super.onDestroy();              db.close();                //不在当前页时会注销此页面                         }  @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.zhuce);    //获取控件    edityhm = (EditText)findViewById(R.id.edityhm);    edityhmm = (EditText)findViewById(R.id.edityhmm);    edityhxm = (EditText)findViewById(R.id.edityhxm);    edityhsfz = (EditText)findViewById(R.id.edityhsfz);    edityhyx = (EditText)findViewById(R.id.edityhyx);    edityhdh = (EditText)findViewById(R.id.edityhdh);    rdman = (RadioButton) findViewById(R.id.rdman);    rdwomen = (RadioButton) findViewById(R.id.rdwomen);    rdgroup = (RadioGroup)findViewById(R.id.rdgroup);    yhzhuce = (Button)findViewById(R.id.yhzhuce);    yhfanhui = (Button)findViewById(R.id.yhfanhui);    // 添加监听   yhzhuce.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        // TODO 自动生成的方法存根        // 获取所有的用户信息,访问网络服务器端,将信息发送给服务器端去处理。         User user = new User();         user.setName(edityhm.getText().toString());           user.setPassword(edityhmm.getText().toString());         user.setYhsfz(edityhsfz.getText().toString());         user.setYhxm(edityhxm.getText().toString());         user.setYhyx(edityhyx.getText().toString());         user.setYhdh(edityhdh.getText().toString());         if (rdman.isChecked())                user.setSex(""男"");            else                user.setSex(""女"");         if (zhuce(user)) {// 调用zhuce方法,如果注册成功                         // 跳转到登录界面                           Intent in = new Intent();                           in.setClass(ZhuceActivity.thisLoginActivity.class);                           startActivity(in);                           // 销毁当前activity                           ZhuceActivity.this.onDestroy();                       }  else {// 注册不成功                        Toast.makeText(ZhuceActivity.thissorry!!,注册失败""                                Toast.LENGTH_SHORT).show();                        edityhm.requestFocus();                    }                }});   yhfanhui.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        Intent in1 = new Intent();        in1.setClass(ZhuceActivity.thisLoginActivity.class);        ZhuceActivity.this.startActivity(in1);    }   });   }

// 添加用户

// User user这段语句是直接
public Boolean zhuce( User user) {

Boolean zhuceok = false;
String str = ""insert into user values(???????) "";

LoginActivity main = new LoginActivity();

db=SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString() +""/test.dbs""null);
main.db = db;

try {

db.execSQL(str new String[] { user.getName()user.getPassword()user.getYhsfz()user.getYhxm()
user.getYhyx()user.getYhdh()user.getSex()});

zhuceok = true;

} catch (Exception e) {

main.createDb();

return zhuceok;
}

return zhuceok;

}

}

登录java代码
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class LoginActivity extends Activity {
// 声明控件变量 注意变量为null时能
private EditText login_username;
private EditText login_password;
private Button zhuce;
private Button denglu;
public static SQLiteDatabase db;

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_login);    login_username = (EditText)findViewById(R.id.login_username);    login_password = (EditText)findViewById(R.id.login_password);    zhuce = (Button)findViewById(R.id.zhuce);    denglu = (Button)findViewById(R.id.denglu);    zhuce.setOnClickListener(new zhuceListener());    denglu.setOnClickListener(new dengluListener());    db = SQLiteDatabase.openOrCreateDatabase(LoginActivity.this.getFilesDir().toString() + ""/test.dbs"" null);            //getFilesDir().toString()是获取存放数据库文件的路径.}//添加一个监听器

class zhuceListener implements OnClickListener{

@Overridepublic void onClick(View arg0) {    // TODO 自动生成的方法存根    //生成一个Intent对象    Intent intent = new Intent();    intent.setClass(LoginActivity.this ZhuceActivity.class);    LoginActivity.this.startActivity(intent);}

}
class dengluListener implements OnClickListener{

@Overridepublic void onClick(View arg0) {    // TODO 自动生成的方法存根    String name = login_username.getText().toString();    String password = login_password.getText().toString();    if (name.equals("""") || password.equals("""")) {          // 弹出消息框  AlertDialog  通过Builder方法,然后用show()来实现        new AlertDialog.Builder(LoginActivity.this).setTitle(""错误"")                  .setMessage(""帐号或密码不能空"").setPositiveButton(""确定"" null)                  .show();      } else {          isUserinfo(name password);      }  }

}

// 判断输入的用户是否正确

public Boolean isUserinfo(String name String pwd) {

try{

String str=""select * from user where name=? and password=?"";

Cursor cursor = db.rawQuery(str new String []{namepwd});

//Cursor 是每行的集合。SQLite 数据库,,,,db.rawQuery执行本地SQL语句查询
if(cursor.getCount()<=0){

new AlertDialog.Builder(LoginActivity.this).setTitle(""错误"")

.setMessage(""帐号或密码错误!"").setPositiveButton(""确定"" null)

.show();

return false;

}else{

new AlertDialog.Builder(LoginActivity.this).setTitle(""正确"")

.setMessage(""成功登录"").setPositiveButton(""确定""new DialogInterface.OnClickListener(){
//设置确定按钮点击的事件Listener可以直接在这边设置,纠结了好久
@Override
public void onClick(DialogInterface dialog int which) {
//实现你的onclick方法
Intent it = new Intent(LoginActivity.thisJiemianActivity.class); startActivity(it);
}}
).
show();

return true;

}

   }catch(SQLiteException e){         createDb();     }     return false;  

}

// 创建数据库和用户表

public void createDb() {

db.execSQL(""create table user( name varchar(30) primary keypassword varchar(30)yhsfz varchar(50) +
yhxm varchar(30)yhyx varchar(50)yhdh varchar(50)sex varchar(20)"");

}

//举例如果你触发startButton按钮事件启动线程,而没有触发stopButton按钮事件停止线程,在离开该页面时onDestroy()中的停止线程功能就发挥了作用
protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

db.close();

}

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.login menu);    return true;}

}

还有就是声明user对象的属性
public class User {
private String name;
private String password;
private String yhsfz;
private String yhxm;
private String yhyx;
private String yhdh;
private String sex;

public String getName(){    return name;}public void setName(String name){    this.name = name;}public String getPassword(){    return name;}public void setPassword(String password){    this.password = password;}public String getYhsfz(){    return yhsfz;}public void setYhsfz(String yhsfz){    this.yhsfz = yhsfz;}public String getYhxm(){    return yhxm;}public void setYhxm(String yhxm){    this.yhxm = yhxm;}public String getYhyx(){    return yhyx;}public void setYhyx(String yhyx){    this.yhyx = yhyx;}public String getYhdh(){    return yhdh;}public void setYhdh(String yhdh){    this.yhdh = yhdh;}public String getSex(){    return sex;}public void setSex(String sex){    this.sex = sex;}    不知道该如何解决,可能是哪里的代码写错了,望各路大神能指点下,感谢!

解决方案

such no table 你看看你的数据库中有没有表啊,你的表都没有生成成功,。

时间: 2024-11-08 19:29:11

android-安卓sqlite的问题,不能点注册按钮,点了就出错。的相关文章

关于安卓SQLite的问题

问题描述 关于安卓SQLite的问题 大神,小弟学习安卓数据库时遇到了一些问题,求大神帮助! 我是想要在一个Fragment页面里动态加载ListView,写了一个自定义的Adapter 在 onActivityCreated里面写了 adapter=new FragmentRecordAdapter(this,start, end); listView_data.setAdapter(adapter); 在Adapter里面写了 public class FragmentRecordAdapt

android 有关sqlite数据库的问题

问题描述 android 有关sqlite数据库的问题 写了个简单的登录注册界面,总是出现这个问题,求大神啊啊啊 都快被搞疯了啊啊啊啊啊,麻烦熟练Android的大神帮个忙啊 解决方案 Android中Sqlite数据库多线程并发问题Android中Sqlite数据库多线程并发问题解决SQLite数据库中文乱码问题 解决方案二: 查看一下你的sql语句是否正确. 解决方案三: 在网上查了一下 大部分说的 没有关闭数据库. 更重要的是,我想你应该重用sqlhandler对象,把它作为一个场变量.问

安卓数据库-关于安卓SQLite的问题

问题描述 关于安卓SQLite的问题 小弟在学习的时候,遇到了一些困难,求大神解答!这是我遇到的困难:我写的代码:其中一个是AddDAO接口:package com.AA.database; import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase; public c

编程-安卓,已在manifest中注册了activity,但是仍然提示找不到activity

问题描述 安卓,已在manifest中注册了activity,但是仍然提示找不到activity 先上logcat: 以下是manifest: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.dell_pc.bi

Android安卓中循环录像并检测内存卡容量

 这篇文章主要介绍了Android安卓中循环录像并检测内存卡容量,当内存卡空间已满时,本文还实现自动删除视频列表里面的第一个文件,需要的朋友可以参考下     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /** * 循环录像,当内存卡容量少于300M时,自动删除视频列表里面的第一个文件 */ private void xunhuanl

Android中SQLite数据库操作

一.基础知识: 1.SQLite的数据类型: NULL:空值. INTEGER:带符号的整型,具体取决有存入数字的范围大小. REAL:浮点数字,存储为8-byte IEEE浮点数. TEXT:字符串文本. BLOB:二进制对象. smallint 16位元的整数. interger 32位元的整数. decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点后有几位数.如果没有特别指定,则系统会设为 p=5; s=0 . floa

android中sqlite一直报错

问题描述 android中sqlite一直报错 在应用中用到sqlite,创建了一些表,代码如下: db.execSQL("CREATE TABLE IF NOT EXISTS " + GAMES_HISTORY_TABLE+ " (" + GAME_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT, " + RIGHT_DRILLS + "INTEGER NOT NULL, " + NUM_

Android中SQLite应用详解

上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite. 现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取.

android的sqlite 上传数据库到ftp,再下载下来后,为什么打不开?

问题描述 android的sqlite 上传数据库到ftp,再下载下来后,为什么打不开? android的sqlite数据库,存在data/data/packagename/databases/下, 用org.apache.commons.net.ftp.FTPClient 上传数据库到ftp,再下载下来后,为什么提示损坏,打不开? 我测试过,ftp上的文件是正确的,下载也成功了,文件有更新,文件的大小和ftp上的也是一样的.但是为什么打不开呢?用sqlexpert打开sqlite,提示data