首页 文章 精选 留言 我的

精选列表

搜索[sqlite],共2260篇文章
优秀的个人博客,低调大师

Android:数据库增删改查、SQLite、ORM、Cursor

1.继承类SQLiteOpenHelper: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 public class MySQLiteHelper extends SQLiteOpenHelper { //重写构造方法 public MySQLiteHelper(Context context, String name, CursorFactory factory, int version) { super (context, name, factory, version); } //创建表 @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "CREATE TABLE person(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))" ); db.execSQL( "CREATE TABLE student(personid INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),phone VARCHAR(20))" ); } //升级表(当Database的Version低于当前new里的Version,直接执行下面方法) @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { int v = newVersion - oldVersion; switch (v) { case 3 : db.execSQL( "ALTER TABLE person ADD salary3 VARCHAR(20)" ); case 2 : db.execSQL( "ALTER TABLE person ADD salary2 VARCHAR(20)" ); case 1 : db.execSQL( "ALTER TABLE person ADD salary1 VARCHAR(20)" ); default : break ; } } } 2.实现增删改查: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 /** * CREATE TABLE person ( personid INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), phone VARCHAR(20) ) DROP TABLE person //删除表 INSERT INTO person(name,phone) VALUES ("rongqin","1598088588") //插入 UPDATE person SET name="Andfeel" WHERE personid=2 //改 ALTER TABLE person ADD salary //增加列 DELETE FROM person WHERE name="Andfeel" //删除 SELECT * FROM person WHERE name="Andfeel" SELECT phone,name FROM person SELECT name,phone FROM person ORDER BY name ASC"//ASC升序 DESC降序 * */ public class MainActivity extends Activity implements OnClickListener { private TextView textView; private MySQLiteHelper mDBHelper; private MySQLiteHelper bHelper; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn__create_table).setOnClickListener( this ); findViewById(R.id.btn_delete_table).setOnClickListener( this ); findViewById(R.id.btn_alter_table).setOnClickListener( this ); findViewById(R.id.btn_insert).setOnClickListener( this ); findViewById(R.id.btn_delete).setOnClickListener( this ); findViewById(R.id.btn_update).setOnClickListener( this ); findViewById(R.id.btn_select).setOnClickListener( this ); textView = (TextView) findViewById(R.id.textView1); //创建数据库 mDBHelper = new MySQLiteHelper( this , "one.db" , null , 3 ); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true ; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn__create_table: btnCreateTable(); break ; case R.id.btn_delete_table: btnDeleteTable(); break ; case R.id.btn_alter_table: btnAlterTable(); break ; case R.id.btn_insert: btnInsert(); break ; case R.id.btn_delete: btnDelete(); break ; case R.id.btn_update: btnUpdate(); break ; case R.id.btn_select: btnSelect(); break ; default : break ; } } private void btnSelect() //查 { SQLiteDatabase db = mDBHelper.getWritableDatabase(); // Cursor cursor = db.rawQuery("SELECT * FROM person WHERE name = ?", new String[]{"rongqin"}); // cursor.moveToFirst(); Cursor cursor = db.query( "person" , //表名 new String[]{ "phone" , "name" }, //查询的列名 "name=?" , //查询条件 new String[]{ "huangxx" }, //查询参数 null , null , "phone DESC" ); //排序,升序为ASC,降序为DESC boolean hasdata = cursor.moveToFirst(); //游标移到第一行 StringBuilder sb = new StringBuilder(); while (hasdata) //是否有数据 { int columnIndex = cursor.getColumnIndex( "name" ); //得到name的列数 String name = cursor.getString(columnIndex); //得到name这一列的值 int columnIndex2 = cursor.getColumnIndex( "phone" ); String phone = cursor.getString(columnIndex2); sb.append( "name:" ).append(name).append( " phone:" ).append(phone).append( "--" ); hasdata = cursor.moveToNext(); //游标移动到下一行,判断是否有值 } textView.setText(sb.toString()); } private void btnUpdate() //改 { SQLiteDatabase db = mDBHelper.getWritableDatabase(); // db.execSQL("UPDATE person SET phone='0592xxxxxx' WHERE personid=5"); ContentValues values = new ContentValues(); values.put( "name" , "haoyouduo" ); values.put( "phone" , "666666" ); db.update( "person" , values , "personid=?" , new String[]{ "8" }); } private void btnDelete() //删 { SQLiteDatabase db = mDBHelper.getWritableDatabase(); // db.execSQL("DELETE FROM person WHERE name='Andfeel'"); db.delete( "person" , "name = ? and personid = ?" , new String[]{ "haoyouduo" , "5" }); } private void btnInsert() //增 { SQLiteDatabase db = mDBHelper.getWritableDatabase(); // db.execSQL("INSERT INTO person(name,phone) VALUES ('rongqin',1598088588)"); ContentValues values = new ContentValues(); values.put( "name" , "huangxx" ); values.put( "phone" , "158888" ); db.insert( "person" , null , values ); } private void btnAlterTable() //扩展表 { } private void btnDeleteTable() //删除表 { } private void btnCreateTable() //创建表 { } } 其他总结: 1.关闭数据源 1 2 3 4 5 6 7 8 9 10 /** * 关闭数据源 */ public void closeConnection() { if (mDb != null && mDb.isOpen()) mDb.close(); if (mDbHelper != null ) mDbHelper.close(); } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1216877,如需转载请自行联系原作者

优秀的个人博客,低调大师

Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常

异常:Android.Database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 10 此错误是数据返回到ICursor无法确定获取列的索引,那么需要加上一下代码即可。 if (i == 0) //确定游标位置 { ic.MoveToFirst(); } else { ic.MoveToNext(); } 完整代码Demo: /// <summary> /// 查询数据 /// </summary> void QueryData() { ICursor ic = Localhost_DataBase.Query("tb_person", null, null, null, null, null, null); for (int i = 0; i < ic.Count; i++) { if (i == 0) //确定游标位置 { ic.MoveToFirst(); } else { ic.MoveToNext(); } person = new Person(); person.Id = ic.GetString(ic.GetColumnIndex("Id")); person.Name = ic.GetString(ic.GetColumnIndex("name")); person.Age = ic.GetString(ic.GetColumnIndex("age")); person.Sex= ic.GetString(ic.GetColumnIndex("sex")); person.IdCard = ic.GetString(ic.GetColumnIndex("idcard")); list.Add(person); } lv_Person.Adapter = new ListViewAdapter(this, list); }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册