android中的sqlite示例程序[关闭]

2024-01-03

我是数据库概念的新手,特别是我需要相关的数据库概念。我想要一个在 android 上使用 sqlite 数据库的示例。我浏览了 android 开发人员网站,但发现有关数据库示例的内容很少。 由于我对数据库概念不熟悉,任何人都可以建议我一些好的资源来理解 create()、insert()、Query()...等。如果我能得到任何与 android 一起使用的示例程序,那就更好了。

提前致谢


非常简单,请按照下面的代码操作... 创建 3 个类,例如命名为 - 1.我使用了Constants接口,参考完整代码并发现它的用途

          package com.mypackage.quaddeals;

import android.net.Uri;
import android.provider.BaseColumns;

public interface Constants extends BaseColumns {
    public static final String TABLE_NAME = "user_deal";

    public static final String AUTHORITY = "com.mypackage.quaddeals";
    public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY
            + "/" + TABLE_NAME);

    public static final String TITLE = "title";
    public static final String CITYID = "cityid";

}

2.BruPress数据类...

package com.mypackage.quaddeals;

import static android.provider.BaseColumns._ID;

import static com.mypackage.quaddeals.Constants.CITYID;
import static com.mypackage.quaddeals.Constants.TITLE;
import static com.mypackage.quaddeals.Constants.TABLE_NAME;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class Bru_Press_Data extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "QuadDeals.db";
    public static final int DATABASE_VERSION = 1;

    /** Create a helper object for the Events database */
    public Bru_Press_Data(Context ctx) {
        super(ctx, DATABASE_NAME, null, DATABASE_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        try {
            db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
                    + " INTEGER PRIMARY KEY AUTOINCREMENT," + TITLE
                    + " TEXT UNIQUE," + CITYID + " TEXT);");            
        } catch (Exception e) {
            Log.v("Bru_Press_Data", "exception in table created");
        }
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

}

3.提供者类

package com.mypackage.quaddeals;

import static android.provider.BaseColumns._ID;

import static com.mypackage.quaddeals.Constants.CONTENT_URI;
import static com.mypackage.quaddeals.Constants.AUTHORITY;
import static com.mypackage.quaddeals.Constants.TABLE_NAME;

import android.app.SearchManager;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;

public class Bru_Press_Provider extends ContentProvider {
    private static final int QUADUSER = 1;
    private static final int QUADUSER_ID = 2;
    /** The MIME type of a directory of events */
    private static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.example.brown";

    /** The MIME type of a single event */
    private static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/vnd.example.brown";
    private static final String CONTENT_TYPE1 = "vnd.android.cursor.dir/vnd.example.brown";

    /** The MIME type of a single event */
    private static final String CONTENT_ITEM_TYPE1 = "vnd.android.cursor.item/vnd.example.brown";
//    private static final String CONTENT_TYPE2 = "vnd.android.cursor.dir/vnd.example.brown";

    /** The MIME type of a single event */
//  private static final String CONTENT_ITEM_TYPE2 = "vnd.android.cursor.item/vnd.example.brown";
    private Bru_Press_Data news;
    private UriMatcher uriMatcher;

    private Cursor cursor;
    private SQLiteDatabase db;
    String[] str;

    @Override
    public boolean onCreate() {

        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
        uriMatcher.addURI(AUTHORITY, "user_deal", QUADUSER);
        uriMatcher.addURI(AUTHORITY, "user_deal/#", QUADUSER_ID);

        news = new Bru_Press_Data(getContext());
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String orderBy) {
        SQLiteDatabase db;
        Cursor cursor = null;
        if (uriMatcher.match(uri) == QUADUSER_ID) {
            long id = Long.parseLong(uri.getPathSegments().get(1));
            selection = appendRowId(selection, id);
        }
        if (uriMatcher.match(uri) == QUADUSER) {
            // Get the database and run the query
            db = news.getReadableDatabase();
            cursor = db.query(TABLE_NAME, projection, selection, selectionArgs,
                    null, null, orderBy);
        }
        cursor.setNotificationUri(getContext().getContentResolver(), uri);
        return cursor;
    }

    @Override
    public String getType(Uri uri) {
        switch (uriMatcher.match(uri)) {
        case QUADUSER:
            return CONTENT_TYPE;
        case QUADUSER_ID:
            return CONTENT_ITEM_TYPE;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
        }
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {

        SQLiteDatabase db = news.getWritableDatabase();
        Uri newUri = null;
        long id = -1;
        // Validate the requested uri

        if (uriMatcher.match(uri) == QUADUSER) {
            try {

                id = db.insertOrThrow(TABLE_NAME, null, values);
                // Notify any watchers of the change
                newUri = ContentUris.withAppendedId(CONTENT_URI, id);
                getContext().getContentResolver().notifyChange(newUri, null);

            } catch (NullPointerException e) {
                    Log.v("Error","OnInsert"+e);
            }
        } 
        else if (uriMatcher.match(uri) != QUADUSER) {
            throw new IllegalArgumentException("Unknown URI bru press " + uri);
        }

        return newUri;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        SQLiteDatabase db = news.getWritableDatabase();
        int count;
        long id;        
        Log.v("Delete",selection);
        switch (uriMatcher.match(uri)) {

        case QUADUSER:
            count = db.delete(TABLE_NAME, selection, selectionArgs);
            break;
        case QUADUSER_ID:
            id = Long.parseLong(uri.getPathSegments().get(1));
            count = db.delete(TABLE_NAME, appendRowId(selection, id),
                    selectionArgs);
            break;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
        }
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        SQLiteDatabase db = news.getWritableDatabase();
        int count;
        long id;        
        switch (uriMatcher.match(uri)) {
        case QUADUSER:
            count = db.update(TABLE_NAME, values, selection, selectionArgs);
            break;
        case QUADUSER_ID:
            id = Long.parseLong(uri.getPathSegments().get(1));
            count = db.update(TABLE_NAME, values, appendRowId(selection, id),
                    selectionArgs);
            break;
        default:
            throw new IllegalArgumentException("Unknown URI " + uri);
        }

        // Notify any watchers of the change
        getContext().getContentResolver().notifyChange(uri, null);
        return count;
    }

    /** Append an id test to a SQL selection expression */
    private String appendRowId(String selection, long id) {
        return _ID
                + "="
                + id
                + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')'
                        : "");
    }

}

注意:您应该在 Manifest 文件中定义此 Provider 类,例如.

在另一个类中,我可以将数据插入数据库并检索数据...如下

class A extends Activity{

  {

 addevent(cityname,cityid);  // to insert
 }

  private void addevent(String a1, String a2) {
        try {
            ContentValues values = new ContentValues();         
            values.put(Constants.TITLE, a1);
            values.put(Constants.CITYID, a2);   
            getContentResolver().insert(Constants.CONTENT_URI, values);

        } catch (Exception e) {
            Log.v("Error",""+e);
        }
    }

从数据库检索

Cursor c = getContentResolver().query(Constants.CONTENT_URI,
                    null, null, null,null);
            int a = c.getCount();
            Log.v("Count",""+a);

               int columnIndex  =  c.getColumnIndex(Constants.TITLE);
               int columnIndex2 =  c.getColumnIndex(Constants.CITYID);
                if (c.moveToNext()) {
                  cityName = c.getString(columnIndex);
                  city_id= c.getString(columnIndex2);
                }

  }

尝试这样的事情......它会对你有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android中的sqlite示例程序[关闭] 的相关文章

  • 使用 google Directions API 的地图视图绘制方向 - 解码折线

    我正在尝试使用 Google 方向 API 在我的地图视图上显示方向 但我在从 JSON 响应获取数据时遇到困难 我可以获得 级别 和 点 字符串 但无法弄清楚如何将它们解码为地图上的点 任何帮助将非常感激 我有一个类可以为您解码它们 添加
  • Android 在打开应用程序时会广播吗?

    例如 如果我想知道Youtube何时打开 是否有与之相关的广播 我当然知道我可以轮询 logcat 消息来检查活动 但我可以通过广播来做到这一点吗 因为它会少得多的耗电 此链接似乎表明这是不可能的 如何跟踪 Android 中的应用程序使用
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • 调整浮动操作按钮的图标大小(fab)

    The new floating action button should be 56dp x 56dp and the icon inside it should be 24dp x 24dp So the space between i
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • Android:滚动 Horizo​​ntalScrollView 时如何禁用 ScrollView 的垂直滚动?

    我正在开发一个带有带有 ScrollView 的 Activity 的 Android 应用程序 其中包含 Horizo ntalScrollView 等内容 当我触摸 Horizo ntalScrollView 时 我想禁用外部 Scro
  • 如何修改 Skobbler 注释而不重新添加它

    我必须修改 SKAnnotation 的图像 注释生成器代码 private SKAnnotation getAnnotationFromView int id int minZoomLvl View view SKAnnotation a
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • Android:监听状态栏通知

    有没有办法在状态栏被下拉时监听通知 1 用于检测状态栏变化 您可以注册一个监听器来获取系统UI可见性变化的通知 因此 要在您的活动中注册侦听器 Detecting if the user swipe from the top down to
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • 在 KitKat 4.4.2 中获取 SDard 路径和大小

    我在 Google Play 上有一个设备信息应用程序 在该应用程序中我有存储信息 我知道 Android 4 4 在访问外部 SD 卡方面发生了一些变化 内部似乎没有给我带来问题 我的问题是 如何可靠地获取 KitKat 上 SD 卡的大
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • 获取其他指针的MotionEvent.getRawX/getRawY

    我可以获取其他指针的MotionEvent getRawX getRawY 值吗 MotionEvent getRawX API 参考 http developer android com reference android view Mo
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro
  • 使用单选按钮更改背景颜色 Android

    我试图通过从单选组中选择单选按钮来更改应用程序选项卡的背景 但是我不确定如何执行此操作 到目前为止我已经 收藏夹 java import android app Activity import android os Bundle publi

随机推荐

  • Scala中二叉树的尾递归最大深度方法

    我写了一个计算二叉树最大深度的方法 我想写一个尾递归方法 我想过使用列表 但没有找到解决方案 这是我的方法 不是尾递归的 def depth Int def iter f FormulaWff Int f match case Var gt
  • 使用其他栅格作为指标对栅格堆栈的每个网格单元求和的函数

    input raster s lt stack list files dailyraster full names TRUE daily raster stack r start lt raster stackSumSTART asc th
  • 并行 foreach 循环 - 奇怪的行为

    下面的代码简单地创建一个随机数的 List gt 然后在并行 foreach 循环中计算每个列表的累积和 为什么我得到的评估少于 numLists 通常在9990左右 我猜这与线程安全有关 有什么替代方法 我是 C 初学者 所以希望我使用了
  • 如何登录win32 c++到Visual Studio输出窗口?

    我的 log4net 正在记录到 Visual Studio 输出窗口 但是我可以在 C win32 代码中使用什么代码来执行与我需要调试 C 相同的操作 并且似乎根本无法单步执行它 并且日志记录在生产中很有用无论如何也是如此 我添加了 w
  • 更改现有数据框的架构

    我想更改现有数据框的架构 在更改架构时遇到错误 我是否可以更改数据框的现有架构 val customSchema StructType Array StructField data typ StringType nullable false
  • 在 g++ 4.4.3 上得到负 NaN,这是标准吗?

    我在带有 Ubuntu Lucid Lynx 的 Linux 上安装了 g 4 4 3 并且得到了 nan 因此 在带有 g 4 3 1 的 Hardy Heron 上 我得到了所有 nan 这导致我的文本差异回归失败 因为我使用 cout
  • Solr、Sunspot、SQlite 和 Rails

    我想为我的使用 SQlite3 作为数据库的项目实现全文搜索 分面 听说Solr真的很强大 有 Sunspot 和 Solr 教程可用 但仅适用于 MySQL 我找不到任何有关如何为 SQLite3 设置它的文档 有人知道如何使用 SQLi
  • 使用数据表运行 100,000 次 Fisher 精确检验比应用慢

    早上好 我正在尝试使用 R 非常快速地对模拟遗传数据运行 100 000 次 Fisher 精确测试 最好在 30 秒内完成 因为我需要排列病例对照标签并迭代该过程 1 000 次 因此它会运行一夜 我尝试使用融化 整齐的数据上的数据表 其
  • 一个项目可以有多个起源吗?

    一个项目在 Git 中可以有两个 或多个 起源 吗 我想将一个项目推向两者github https github com and a Heroku https www heroku com server 具体来说 添加github仓库时出现
  • beginReceivingRemoteControlEvents 不触发 Apple Music 事件

    我正在从我的应用程序播放 Apple Music Apple Music 播放器代码如下 void submitAppleMusicTrackWithProductID NSString productID productID in US
  • 这个语法在 Javascript 中的含义是什么

    我正在 javascript 中寻找 TWILIO 的 API 我发现了类似的东西 const connect createLocalTracks Twilio Video navigator mediaDevices enumerateD
  • 没有异常处理的力量?

    在 Eclipse 中进行 Java 编程 我习惯于处理异常 在使用 VisualStudio 的 C 中 似乎我不能在方法上说 抛出异常 经过大量编码后 我发现了很多异常 并且必须在测试过程中发现它们时捕获它们 我想被迫处理它们 以便 V
  • 如何对 foreach 循环中迭代的元素进行分段

    我需要循环遍历整个用户列表 但需要一次获取 20 个 foreach var student in Class Students Take 20 Console WriteLine You belong to Group groupNumb
  • 无法自动装配方法

    我收到这个错误 org springframework beans factory BeanCreationException Could not autowire method 这是我的spring的xml配置
  • UIPickerView Swift 上奇怪的自定义背景颜色

    将自定义 UIColor 分配给 UIPickerViews 的背景时 我得到了奇怪的颜色 我为 textViews 和 pickerViews 创建了颜色 如下所示 let myTextViewBackgroundColor UIColo
  • 当node.js宕机时,如何让它自动恢复?

    由于节点基本上是一个进程 因此当出现严重错误时 整个应用程序就会崩溃 我现在有几个基于 Express 构建的应用程序 并且我正在使用一些手动方法来防止延长停机时间 process on uncaughtException 和自定义心跳监视
  • Mysql find_in_set 斜杠( / ) 分隔符

    我的值为 1 2 3 4 5 2 3 6 我想找到值 2 所以结果必须是 1 2 2 3 6 我不想使用 LIKE 运算符 有没有办法在FIND IN SET函数中设置分隔符 您可以使用like or find in set 这是一种方法
  • 如何编写 javascript 来重新排序 pdf 文档的页面?

    我有一个双面文档作为两个单独的 pdf 文件 一个文档的正面页面和第二个文档的背面页面 front pdf rear pdf 我还将它们合并为一个包含所有页面的文档 但所有正面页面都在背面页面之前 页面排序的形式为 1 3 5 7 n 2
  • Spring 启动和 SQLite

    我正在尝试将 SQLite 与 Spring Boot 应用程序一起使用 我知道 Spring Boot 对 MongoDB 等提供了出色的支持 但我找不到将 Spring Boot 与 SQLite 结合使用的方法 有什么建议从哪里或如何
  • android中的sqlite示例程序[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是数据库概念的新手 特别是我需要相关的数据库概念 我想要一个在 android 上使用 sqlite 数据库的示例 我浏览了 andro