文档章节

SQLitedatabase实现访问sqlite

爱吃橙子的小石头
 爱吃橙子的小石头
发布于 2014/12/11 21:02
字数 447
阅读 75
收藏 4

通过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>

运行效果:


© 著作权归作者所有

爱吃橙子的小石头
粉丝 0
博文 35
码字总数 12623
作品 0
沙坪坝
程序员
私信 提问
不会点SQLite,都不好意思说自己是开发的

一、为什么要会点SQLite? SQLite作为一款轻量级的关系型数据库,占用的资源特别少,所以其应用场景也是特别的多。在移动开发中,我们经常会有将数据存储在本地的需求,此时SQLite将是我们最...

silencezwm
2018/07/03
0
0
Android 开发中使用 SQLite 数据库

SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都...

红薯
2010/08/22
67.2K
32
Android开发_SQLite使用方法技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangty0223/article/details/9407509 SQLite介绍 SQLite是轻量级的、嵌入式的、关系型数据库,目前已经在iPh...

张腾元_Ternence
2013/07/22
0
0
Android之SQLite数据库

SQLite简介 SQLite 是一个开源的嵌入式关系数据库,它在 2000 年由 D. Richard Hipp 发布,它可以减少应用程序管理数据的开销 , SQLite 可移植性好 、 很容易使用 、 很小 、 高效而且可靠 ...

晨曦之光
2012/05/16
1K
0
ANDROID开发之SQLite详解

SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动态库...

天下杰论
2013/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

基础工具类

package com.atguigu.util;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import com.alibaba.druid......

architect刘源源
今天
43
0
P30 Pro劲敌!DxO官宣新机:排行榜又要变

5月26日晚间,DxOMark官方推特预告,将在5月27日公布一款新机型的DxOMark评分,猜猜是哪款? 网友猜想的机型有:红米K20、谷歌Pixel 3a、索尼Xperia 1、诺基亚9 PureView等。 DxOMark即将公布...

linux-tao
昨天
15
0
Ubuntu18.04.2窗口过小不能自适应(二次转载)

解决Ubuntu在虚拟机窗口不能自适应 2018年09月06日 16:20:08 起不了名儿 阅读数 855 此博文转载:https://blog.csdn.net/nuddlle/article/details/77994080(原地址) 试了很多办法这个好用 ...

tahiti_aa
昨天
2
0
死磕 java同步系列之CountDownLatch源码解析

问题 (1)CountDownLatch是什么? (2)CountDownLatch具有哪些特性? (3)CountDownLatch通常运用在什么场景中? (4)CountDownLatch的初始次数是否可以调整? 简介 CountDownLatch,可以...

彤哥读源码
昨天
6
0
Nginx提供下载apk服务

有时候我们可能需要提供文件或者其他apk下载链接,通过 nginx 配置可以很简单地实现。 server {    listen 80;    server_name download.xxx.com;    root app;    locati...

Jack088
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部