jjzjj

android.database.sqlite.SQLITeException : no such table: admin while compiling: INSERT INTO . ..等

coder 2023-07-20 原文

我正在尝试在我的数据库中添加另一个表,第一个已成功创建,并且数据也已成功插入。但是当我尝试添加另一个表,然后插入数据时......我得到了这个错误(在编译插入时没有这样的表......等等。

我在 google 和 stackoverflow 中搜索过,我发现一些人的代码与我的相似。有人不得不在他的代码中添加(onUpgrade 方法),这样它就会自动增加数据库版本....但我已经写过了。我感到很困惑。请帮忙..??

这是数据库代码:

package group.com;
import android.content.ContentValues;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {


public static final String KEY_Admin_ROWID = "_id";
public static final String KEY_Admin_fullName = "adminFullName";
public static final String KEY_Admin_UserName = "AdminUserName";
public static final String KEY_Admin_Password = "AdminPassword";

private static final String TAG = "DBAdapter";
private static final String DATABASE_NAME = "RamiTariq";

private static final String DATABASE_TABLE = "info";
private static final String DATABASE_TABLE_Admin = "admin";

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table "
    + DATABASE_TABLE + " (" + KEY_ROWID
    + " integer primary key autoincrement, " 
    + KEY_NAME + " text not null, " 
    + KEY_PSSWORD + " text not null , " 
    + KEY_F_NAME + " text not null ," 
    + KEY_DATE + " text not null," 
    + KEY_JOB + " text not null," 
    + KEY_ADDRESS + " text not null," 
    + KEY_PHONE + " text not null," 
    + KEY_NATIONAL_NUMBER + " text not null," 
    + KEY_MONEY_SHOULD_PAY + " text null," 
    + KEY_ACTUAL_MONEY + " text null);";


private static final String DATABASE_CREATE_ADMIN = "create table "
    + DATABASE_TABLE_Admin + " (" + KEY_Admin_ROWID
    + " integer primary key autoincrement, " 
    + KEY_Admin_fullName + " text not null, "
    + KEY_Admin_UserName + " text not null, "
    + KEY_Admin_Password + " text not null);";


private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context ctx) {
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }


    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL(DATABASE_CREATE);
            db.execSQL(DATABASE_CREATE_ADMIN);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old        data");
        db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
        db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE_Admin);
        onCreate(db);
    }
}

// ---opens the database---
public DBAdapter open() throws SQLException {
    db = DBHelper.getWritableDatabase();
    return this;
}

// ---closes the database---
public void close() {
    DBHelper.close();
}


//------insert an admin into the database-----
public long insertAdmin(String full_name, String user_name, String password ) {
    ContentValues initialValues = new ContentValues();

    initialValues.put(KEY_Admin_fullName, full_name);
    initialValues.put(KEY_Admin_UserName, user_name);
    initialValues.put(KEY_Admin_Password,password);

    return db.insert(DATABASE_TABLE_Admin, null,initialValues);
}


  }

这是 Activity 代码:

 package group.com;

 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.Toast;


public class InsertAdmin extends Activity {

DBAdapter db = new DBAdapter(this);

EditText fullName, username, password, rePassword;
Button insertAdmin;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.insertadmin);

    fullName = (EditText) findViewById(R.id.fullName);
    username = (EditText) findViewById(R.id.username);
    password = (EditText) findViewById(R.id.password);
    rePassword = (EditText) findViewById(R.id.rePassword);

    insertAdmin = (Button) findViewById(R.id.insertAdmin);

    insertAdmin.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            String fName = fullName.getText().toString();
            String uName = username.getText().toString();
            String pass = password.getText().toString();
            String rePass = rePassword.getText().toString();

            if(fName.length()==0 || uName.length()==0 ||   pass.length()==0 || rePass.length()==0)
            {
                displayMessage("Please Enter Full Data");
                return;
            }

            if (uName.length() == 0)
            {
                displayMessage("Enter username");
                return;
            }
            if (pass.length() == 0)
            {
                displayMessage("Enter The password");
                return;
            }


            if(pass.equals(rePass))
            {
                db.open();
                long id = db.insertAdmin(fName, uName, pass);


                if(id>0)
                {
                    displayMessage(id + "\nSuccessfuly Inserted");

                }
                else
                {
                    displayMessage("Not Inserted");
                }

                db.close();

                startActivity(new Intent(getBaseContext(),Admin.class)) ; 

            }

            else
                displayMessage("Your Passwords doesn't match");

        }
    });

}

public void displayMessage(String msg)
{
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}

  }

最佳答案

卸载您的应用程序,以便删除旧版本的数据库。

您的数据库版本仍为 1,因此 onUpgrade() 未运行。数据库文件已经存在,所以 onCreate() 没有运行。现有的数据库文件不包含您在当前版本的 onCreate() 中创建的所有表。

关于android.database.sqlite.SQLITeException : no such table: admin while compiling: INSERT INTO . ..等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069532/

有关android.database.sqlite.SQLITeException : no such table: admin while compiling: INSERT INTO . ..等的更多相关文章

  1. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  2. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  3. ruby-on-rails - Rails add_index 算法 : :concurrently still causes database lock up during migration - 2

    为了防止在迁移到生产站点期间出现数据库事务错误,我们遵循了https://github.com/LendingHome/zero_downtime_migrations中列出的建议。(具体由https://robots.thoughtbot.com/how-to-create-postgres-indexes-concurrently-in概述),但在特别大的表上创建索引期间,即使是索引创建的“并发”方法也会锁定表并导致该表上的任何ActiveRecord创建或更新导致各自的事务失败有PG::InFailedSqlTransaction异常。下面是我们运行Rails4.2(使用Acti

  4. ruby - 创建新数据库时 DataMapper SQLite 错误 - 2

    我是Sinatra的新手,我正在尝试使用SQLite3和Datamapper创建一个数据库。我安装了gem和适配器,然后尝试在文件中执行此代码:#configrequire'sinatra'require'sinatra/contrib'ifdevelopment?require'data_mapper'DataMapper::setup(:default,"sqlite3://#{Dir.pwd}/recall.db")DataMapper.finalize.auto_upgrade!当我执行文件时,命令行给了我这个错误:C:/Ruby193/lib/ruby/site_ruby/1

  5. ruby - Rails 3 不会用 rvm 安装 sqlite3-ruby gem? - 2

    我正在试用rvm,并用它安装了ruby​​1.9.2和rails3。我需要重新安装sqlite3-rubygem(因为rvm为不同版本的ruby​​将所有gem分开)。问题是,当我尝试时,我得到:geminstallsqlite3-ruby/home/jenny/.rvm/rubies/ruby-1.9.2-p0/bin/gem:4:warning:Insecureworldwritabledir/home/jenny/.rvm/gems/ruby-1.9.2-p0/bininPATH,mode040777Buildingnativeextensions.Thiscouldtakeaw

  6. ruby-on-rails - Capistrano V3 在 database.yml 上失​​败 - 2

    我正在使用最新版本的Capistrano和我的Rails4应用程序。运行capdpeloy时。我得到了很多输出,包括这次失败:DEBUG[04b6e226]Running/usr/bin/env[-f/var/www/skateboxes/releases/20131022135522/config/database.yml]on162.243.33.179DEBUG[04b6e226]Command:[-f/var/www/skateboxes/releases/20131022135522/config/database.yml]DEBUG[04b6e226]Finishedin0

  7. ruby-on-rails - rails : How to to download a file from a http and save it into database - 2

    我想创建一个RailsController,从网上下载一系列jpg文件,并直接将它们作为二进制文件写入数据库(我不是要上传表格)关于如何做到这一点的任何线索?谢谢编辑:这是我已经使用attachment-fugem编写的一些代码:http=Net::HTTP.new('awebsite',443)http.use_ssl=truehttp.verify_mode=OpenSSL::SSL::VERIFY_NONEhttp.start(){|http|req=Net::HTTP::Get.new("image.jpg")req.basic_authlogin,passwordrespon

  8. Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信) - 2

    运行有问题或需要源码请点赞关注收藏后评论区留言一、利用ContentResolver读写联系人在实际开发中,普通App很少会开放数据接口给其他应用访问。内容组件能够派上用场的情况往往是App想要访问系统应用的通讯数据,比如查看联系人,短信,通话记录等等,以及对这些通讯数据及逆行增删改查。首先要给AndroidMaifest.xml中添加响应的权限配置 下面是往手机通讯录添加联系人信息的例子效果如下分成三个步骤先查出联系人的基本信息,然后查询联系人号码,再查询联系人邮箱代码 ContactAddActivity类packagecom.example.chapter07;importandroid

  9. Android 10.0 设置默认launcher后安装另外launcher后默认Launcher失效的功能修复 - 2

    1.前言 在10.0的系统rom定制化开发中,在系统中有多个launcher的时候,会在开机进入launcher的时候弹窗launcher列表,让用户选择进入哪个launcher,这样显得特别的不方便所以产品开发中,要求用RoleManager的相关api来设置默认Launcher,但是在设置完默认Launcher以后,在安装一款Launcher的时候,默认Launcher就会失效,在系统设置的默认应用中Launcher选项就为空,点击home键的时候会弹出默认Launcher列表,让选择进入哪个默认Launcher.所以需要从安装Launcher的流程来分析相关的设置。来解决问题设置默认La

  10. Ruby Guard 问题 - 'Please install the sqlite3 adapter' - railstutorial.org - 2

    我正在关注RubyonRailsTutorial并且在测试部分变得有些困惑,特别是-3.6.2-AutomatedtestswithGuard按照部署到Heroku的教程说明,我已切换到Postgresql并从我的gemfile中删除了sqlite3,并进行了捆绑安装以进行更新。但是,一旦我运行bundleexecguard我收到消息:/Users/username/.rvm/gems/ruby-1.9.3-p125@global/gems/bundler-1.1.3/lib/bundler/rubygems_integration.rb:147:inblockinreplace_ge

随机推荐