Android studio 连接SQLite数据库 +创建数据库+创建数据库表

Posted CV工程师HYJones

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android studio 连接SQLite数据库 +创建数据库+创建数据库表相关的知识,希望对你有一定的参考价值。

android studio 之数据库的使用 连接创建SQLite

大家好,欢迎来到寒依。
相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻”

我使用的工具是 Intillij idea 专业版 但是方法都一样 因为 Intellij idea 是Android studio 的祖宗 方法都是一样

Intellij idea专业版 yyds

相信你能看到这篇文章 肯定是在学习Android studio 连接数据库时遇到啦问题。哪恭喜你,你今生都很幸运,不然也不可能你遇到我,哪下面呢就让我给下面带来最精彩都得教程。相信你也会觉得非常的简单。
如果你是大佬就单纯想来看看我,那就当我没说,还请大佬来指点指点,必将感激不敬。
不废话啦, 傻瓜式教程马上开始。小板凳坐好啦,下面才是学习Android 开发正确的打开方式。

SQLite 为Android studio 自带 无需下载

Android studio 接数据库(SQLite),创建数据库

第一步 新建一个新的Android 项目 不会看图

新建Android 选择一个空的(Empty Activity)项目 接着点击 下一步

Name 自己取就ok 语言Language 选择 java 点击完成

接下来才是最精彩的时刻 竖起小耳朵 张大眼睛盯好啦 (新建一个类 )

DbContect.java

package com.example.dbproject;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class DbContect extends SQLiteOpenHelper 
    private static final int VERSION=1;
    private static final String DBNAME="Users.db";   //  创建数据库名叫 Users
    private Context mContext;

    public DbContect(Context context)
        super(context,DBNAME,null,VERSION);
        mContext = context;
    
    //创建数据库
    public void onCreate(SQLiteDatabase db)
        //创建密码表  pwd_tb
        db.execSQL("create table pwd_tb (pwd varchar(20) primary key)");
        //创建收入表    user_tb
        db.execSQL("create table user_tb(_id integer primary key autoincrement, money decimal," +
                " time varchar(10),type varchar(10),handler varchar(100),mark varchar(200))");
    
    //数据库版本更新
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)
    
        db.execSQL("drop table if exists pwd_tb");
        db.execSQL("drop table if exists user_tb");
        onCreate(db);
    




再来到 activate_main.xml

activaty_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="match_parent">
        <Button
                android:id="@+id/create"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#00BCD4"
                android:textSize="22dp"
                android:text="点击创建Users数据库"
        >
        </Button>
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

再打开 MainActivaty .java

MainActivaty .java

package com.example.dbproject;

import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
    DbContect helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

            helper=new DbContect(  MainActivity.this);
            Button btn=findViewById(R.id.create);
            btn.setOnClickListener(new View.OnClickListener() 
                @Override
                public void onClick(View V) 
                    SQLiteDatabase db=helper.getWritableDatabase();
                
            );
        
    

好啦 代码完事 刚才是最精彩的时刻 现在到啦激动人心的时候
测试一下是否成功 和数据可视化 精彩即将呈现
运行项目

点开模拟器 小手机

别急 还没完事 结果还没出呢 再来到

此时在右下角会跳出一个东西

到第二个data 下面找到
直接看图吧 不想打字啦

Users.db 就是我们创建的数据库
接下来可视化
方法一 :

嘿嘿 出来啦 激动不激动

可视化方式二:
将数据库保持下来 用其他的可视化工具打开 直接将 保存的 Users.db 托到 Navicat

直接托进去 就ok

好啦 老师再敢问你学习Android studio数据库的使用中有没有什么困难的时候就可以很有底气的跟她说 “老师我没有遇到问题 ,学习中畅行无阻”

教程完毕 欢迎 投稿提问
也欢迎大佬指导
谢谢大家 !

从 Android Studio 中的 SQLite 数据库中以字符串形式检索数据

【中文标题】从 Android Studio 中的 SQLite 数据库中以字符串形式检索数据【英文标题】:Retrieve Data As String From SQLite Database in Android Studio 【发布时间】:2019-05-27 17:41:00 【问题描述】:

我想将名称保存在 SQLite 数据库中,稍后在另一个活动中我想将该名称作为字符串值检索。但我无法从数据库中获取数据。请帮帮我。我的代码如下,

数据库助手:

    private static final String TAG = "DatabaseHelper";
    private static final String TABLE_NAME = "user";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";

    public void onCreate(SQLiteDatabase db) String createTable = 
    "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY 
    AUTOINCREMENT, " + COL2 +" TEXT)"; 
    db.execSQL(createTable);

    public boolean addData(String item) 
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL2, item);

            Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);

            long result = db.insert(TABLE_NAME, null, contentValues);

            if (result == -1) 
                return false;
             else 
                return true;
            
        

主活动:

    mDatabaseHelper=new DatabaseHelper(this);
    Username=(EditText)findViewById(R.id.user);
    saveBtn=(Button)findViewById(R.id.button);

    saveBtn.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View view) 
    String newEntry = Username.getText().toString();
                            AddData(newEntry);
                            Username.setText("");

    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                        startActivity(intent);
                    
                );

            
            public void AddData(String newEntry) 
                boolean insertData = mDatabaseHelper.addData(newEntry);
        
        

家庭活动:

public class HomeActivity extends AppCompatActivity 

    DatabaseHelper mDatabaseHelper;
    String Username;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        mDatabaseHelper = new DatabaseHelper(this);

    


在这里,在这个家庭活动中,我想将用户名作为字符串获取,但我不知道该怎么做。请帮帮我...

【问题讨论】:

请修正代码,使其成为有效的 Java 代码(奇怪的颜色编码是一种提示),并请修正代码格式,即缩进,以便人类可读。 【参考方案1】:

要检索数据,请运行将数据提取到光标中的查询。游标将由 0-n 行组成,并且将具有查询中定义的尽可能多的列。然后您移动行并使用适当的光标get?????方法获取实际数据。

例如,您可以将以下方法添加到 DatabaseHelper 中:-

public String getName(long id) 

    String rv = "not found";
    SqliteDatabase db = this.getWritableDatabase();
    String whereclause = "ID=?";
    String[] whereargs = new String[]String.valueOf(id);
    Cursor csr = db.query(TABLE_NAME,null,whereclause,whereargs,null,null,null);
    if (csr.moveToFirst()) 
        rv = csr.getString(csr.getColumnIndex(COL2));
    
    return rv;

String name = mDatabaseHelper.getName(1); 可以使用上述内容。

请注意,这假定存在 ID 为 1 的行。

【讨论】:

我是按照你的代码做到的。我在我的数据库助手中添加了这个 getname 方法,然后在我的 HomeActivity 中我只是将它称为字符串。字符串名称=mdatabasehelper.getName(1);非常感谢@MikeT @RehanSarwar 很好,如果您认为其中一个答案回答了您的问题,您现在应该勾选其中一个作为答案。【参考方案2】:

您的数据库助手:

    private static final String TAG = "DatabaseHelper";
    private static final String TABLE_NAME = "user";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";



private static final String createTable = "CREATE TABLE " + TABLE_NAME + " (" + COL1 +" INTEGER PRIMARY KEY AUTOINCREMENT, " + COL2 +" TEXT)"; // You have written ID inplace of COL1






 public  DatabaseHelper(Context context)
    

        super(context,DB_NAME,null,1);
    

 public void onCreate(SQLiteDatabase db)
    
        db.execSQL(createTable);

    

public boolean insertData(String name) 

    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
    ContentValues contentValues1 =  new ContentValues();
    contentValues1.put(COL2,name);


    long result1 = sqLiteDatabase.insert(TABLE_NAME,null,contentValues1);
    return result1 != -1;

public Cursor viewData()

    SQLiteDatabase sqLiteDatabase = this.getReadableDatabase();
    Cursor cursor ;

    String query = "Select * from " +TABLE_NAME;
    cursor= sqLiteDatabase.rawQuery(query, null);


    return cursor;

您的主要活动:

 mDatabaseHelper=new DatabaseHelper(this);
    Username=(EditText)findViewById(R.id.user);
    saveBtn=(Button)findViewById(R.id.button);

    saveBtn.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View view) 
    String newEntry = Username.getText().toString();
                            mDatabaseHelper.insertData(newEntry);
                            Username.setText("");

    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                        startActivity(intent);
                    
                );

            

        

您的家庭活动:

public class HomeActivity extends AppCompatActivity 

    DatabaseHelper mDatabaseHelper;
    String Username;


ArrayList<String> listItem;
    ArrayAdapter adapter;
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        mDatabaseHelper = new DatabaseHelper(this);
listView = (ListView) findViewById(R.id.listView);
        listItem = new ArrayList<>();
viewData1();

    

private void viewData1() 

        Cursor cursor = mDatabaseHelper.viewData();

        if (cursor.getCount() == 0) 

            Toast.makeText(this, "No data to show", Toast.LENGTH_SHORT).show();
         else 
            while (cursor.moveToNext()) 
                Log.i("message","Data got");

                listItem.add(cursor.getString(1)); // Adding data received to a Listview
            
            adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listItem);
            listView.setAdapter(adapter);

        
    

    

【讨论】:

【参考方案3】:

看看这个库

很容易实现

https://github.com/wisdomrider/SqliteClosedHelper

【讨论】:

谢谢你的建议,我会检查的。

以上是关于Android studio 连接SQLite数据库 +创建数据库+创建数据库表的主要内容,如果未能解决你的问题,请参考以下文章

如何将SQLite3 创建的数据库与android 程序连接

关于Android Studio查看SQLite数据库

Android Studio使用SQLite数据库

从 Android Studio 浏览 SQLite 数据库 [关闭]

Android Studio - 线程完成后从 SQLite 获取数据

在 android studio 中使用 SQLite 显示上次登录的用户数据