SQLitedatabase实现访问sqlite

通过SQLiteDatabase 来访问sqlite数据库

----Main.java

public class Main extends Activity {
	SQLiteDatabase db;
	ListView listView;
	EditText editText1, editText2;  //要添加的标题和context
	Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		listView = (ListView) findViewById(R.id.listView1);
		editText1 = (EditText) findViewById(R.id.editText1);
		editText2 = (EditText) findViewById(R.id.editText2);
		button = (Button) findViewById(R.id.button1);
		// /data/data/com.example.dbtest/files --/my.db3  
		db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()
				+ "/my.db3", null);
		button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				String str1 = editText1.getText().toString();
				String str2 = editText2.getText().toString();
				try {
					insertToDB(db, str1, str2);
					Cursor cursor = db.rawQuery("select * from news_info",
							null);
					inflateListView(cursor);

				} catch (SQLiteException e) {
					db.execSQL("create table news_info(_id integer primary key autoincrement,"
							+ "news_title varchar(50),"
							+ "news_content varchar(255))");
					insertToDB(db, str1, str2);
					Cursor cursor = db.rawQuery("selecte * from news_info",
							null);
					inflateListView(cursor);
				}

			}
		});

	}

	private void insertToDB(SQLiteDatabase db, String str1, String str2) {
		db.execSQL("insert into news_info values(null, ?, ?)", new String[] {
				str1, str2 });
	}

	private void inflateListView(Cursor cursor) {
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this,
				R.layout.item, cursor, new String[] { "news_title",
						"news_content" }, new int[] { R.id.textView1,
						R.id.textView2 },
				CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
		listView.setAdapter(adapter);
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		if(db!=null&&db.isOpen()){
			db.close();
		}
	}
}

SimpleCursorAdapter封装Cursor时,要求数据表的主键列的列名为   _id  。因为SimpleCursorAdapter只能识别 列名为 

_id的主键。否则会报错。

同java中的操作JDBC一样,数据库最后也要关闭  db.close(); 来回收资源。

---main.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}" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1"
        android:ems="10" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText2"
        android:text="插入数据" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button1" >

    </ListView>

</RelativeLayout>

listeview 每个子项的布局文件 item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/textView1"
        android:text="TextView" />

</RelativeLayout>

运行效果:

时间: 2024-10-03 22:54:05

SQLitedatabase实现访问sqlite的相关文章

【Android】13.0 第13章 创建和访问SQLite数据库&mdash;本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们主要学习如何使用SQLite数据库存取数据. 1.SQLite是个什么档次的数据库 SQLite是一种免费的.开源的数据库,由于它独特的设计(把各种数据类型都转换为它自己内部处理的5种类型)导致其占用内存极少,因此很多项目都喜欢使用它. Android集成了SQLite并内置了专门对SQLite操作

13.4 使用SQLite.NET.Async-PCL访问SQLite数据库

分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 这一节演示如何利用以异步方式(async.await)访问SQLite数据库. 二.示例4运行截图 下面左图为初始页面,右图为单击[创建数据库]按钮后的结果.   下面左图为单击[添加单行]按钮的结果,右图为单击[添加多行]按钮的结果.   注意:不想再像上一节的例子那样逐个添加页面了,毕竟例子的目的仅仅是为了演示最基本的异步操作用法,代码太多容易冲淡要关注的内容,所以该例子并没有去解决重复添加相同学号的记录引

应用EF访问SQLite数据

1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制台项目引用 Netage.Data.SQLite 类库,调用其相应的方法来访问数据. 2.在项目中加入SQLite类库 右键 Netage.Data.SQLite 项目,选择"Manage Nuget Packages"菜单,在输入框中输入"System.Data.SQLite",查询到"Sys

Objective-C访问SQLite

数据库的相关知识我就不去说明了,毕竟只要会sql语言的人就大家都一样. 本案例是在Xcode7.2环境下创建的single view application进行演示操作. 首先第一点,为什么要使用sqlite3? 在iOS的编程中,毫无疑问接触最多的就是界面的代码编排和设计,数据的解析与放置,算法的各种挠头问题... 在数据的解析与放置这一块,就会涉及到数据库缓存的操作,我们都知道,iOS手机编程是在手机端运行的,你不能老是去服务器端读取数据啊,好,就算你不烦,手机也跑的起来,流量不要过啊,对于

Android中使用adb访问SQLite的方法

(1)打开命令提示符,输入:adb,按回车,如果得到下面一大堆命令说明(如图 1),表示adb的配置是成功的,如果提示"不是内部或外部命令,也不是可运行的程序或批处理文件",那么需要将AndroidSDK中adb.exe文件的目录添加到系统的环境变量中. 图 1 (2)输入adb shell,进入Linux命令环境.(如图 2) 图 2 (3)输入cd data,回车,进入根目录下的data文件夹,如图 3. 图 3 (4)输入ls –l命令,查看data文件夹下的文件,如图 4. 图

13.3 使用SQLite.NET-PCL访问SQLite数据库

分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 本章开头已经说过了,SQLite.NET-PCL用起来很爽,这一节咱们看看怎样使用吧. 二.示例3运行截图 下面左图是单击[初始化表数据]后的结果,右图是单击[获取所有记录]后的结果.    下面左图是单击[添加新行]后的界面,右图是添加后重新获取的所有记录:    修改.删除.查找不再截图了,有兴趣自己玩吧. 三.主要设计步骤 1.添加SQLite.NET-PCL程序包 通过NuGet直接添加即可. 2.创建

Dapper C# 访问SQLite

1.以操作SQLite为例.先下载Dapper,项目引用添加Dapper.dll,然后入下 SQLiteConnectionStringBuilder sb = new SQLiteConnectionStringBuilder(); sb.DataSource = @"D:sqlite.db"; SQLiteConnection con = new SQLiteConnection(sb.ToString()); con.Open(); string sql = "sele

数据存储与访问之——初见SQLite数据库

      本节引言: 本节学习Android数据库存储与访问的第三种方式:SQLite数据库,和其他的SQL数据库不同,我们并不需要在手机上另外安装一个数据库手机软件,Android系统已经集成了这个数据库,我们无需像使用其他数据库软件(Oracle,MSSQL,MySql等)又要安装,然后完成相关配置,又要改端口之类的!       1.基本的概念 1)SQLite是什么?为什么要用SQLite?SQLite有什么特点? 答:下面本姑娘来为大家讲解 SQLite是一个轻量级的关系型数据库,运

C#访问加密的SQLite数据库

前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLite管理器是有对SQLite数据库有加密功能的.本小菜使用的是:SQLite Developer管理工具.加密如下:        密码就设置OK了. 2.C#访问SQLite带密码的数据库 首先说说,不带密码的SQLite访问字符串格式,只需写入数据库所在路径即可: string ConnStr=