这是我第一次真正的写一篇博文,之前在CSDN里面学到了很多。我之前遇到了一个问题,我需要将我的Excel中的数据导入AVD(虚拟机)中的SQLite,但是在整个CSDN中找到的答案,不能说没有帮助,但是还是没有一次性的帮我解决这个我问题,因此,我想在这里将我的解决方案贴出来,来帮助那些遇到类似困难的同学,鉴于我是个初学者,我的文章没有一定的深度,但是我一定会将文章写得详细。
不多说,开始吧。说一下,我的大致方式是:将EXCEL保存为cvs格式,然后导入SQLite Expert 的可视化sqlite管理工具,然后放入assets中。然后利用代码写入复制到sqlite中。 第一步:打开Excel,建立一张表。第一行(主键)一定要设置为_id, 后面会解释。
第二步:保存为CSV格式。
第三步:利用记事本打开我们新建的Demo.csv。将编码改为UTF-8,防止在模拟器上运行发生文字乱码的现象。 第四步:点开SQLite Expert数据库管理工具。点击File→New DataBase 新建一个Demo_db的数据库。 第五步:右击刚刚建好的库,然后点击→import text file 导入建好的表。是不是很简单的。 点击Design→Indexs。将_id,设置为主键。然后然后点击ok, 然后再点击apply。 第六步:我们从上图中的File: F:DmeoDemo_DB,(导入时我们的CVS格式表在哪里,数据库文件,就在哪里)找到它。 但是没有格式(有时会遇见,但有时不会遇见),一般来说,数据库都是.db格式。我们给它加上后缀名.db。(注意:必须点开文件夹选项,然后设置显示后缀名才行),然后复制到项目中的assets中去。 复制到assets中去。 第七步:将该数据中Demo_DB中Demo表中的数据复制到模拟器中去(此处我不知道怎么描述)。代码如下。。 因为我们这里用的是适配器是SimpleCursorAdapter,返回的数据中必须包含字段:_id且必须为关键字(_id是主键)。如果返回的Cursor数据中没有包含_id, 字段,将无法绑定成功。
MainActivity.java 代码 package com.example.direct_use; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v4.widget.SimpleCursorAdapter; import android.util.Log; import android.widget.CursorAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; public class MainActivity extends Activity { String DB_NAME = "Demo_DB.db"; ListView list; SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v("breakthrough","加载界面完成"); //将数据库进行复制。。 File fileDir = getFilesDir(); Log.v("breakthrough","fileDir成功"); File file = new File(fileDir,DB_NAME); Log.v("breakthrough","file创建成功"); if(file.exists()) { Log.v("breakthrough","界面已存在了file文件,为上次运行的时候的造成的"); return; } InputStream in = null; FileOutputStream out = null; Log.v("breakthrough","输入输出流构建完成"); try { in = this.getAssets().open(DB_NAME); Log.v("breakthrough","打开了getAssets中的haha.db"); out = new FileOutputStream(file); Log.v("breakthrough","初始化输出流成功"); byte[] buffer = new byte[1024]; int length = -1; while( (length = in.read(buffer)) != -1 ) { out.write(buffer,length); Log.v("breakthrough","输入流输入了多少次啊"); } Log.v("breakthrough","复制成功"); } catch(Exception e) { e.printStackTrace(); Log.v("breakthrough","数据库复制失败"); } finally { try{ in.close(); out.close(); } catch(Exception e) { e.printStackTrace(); Log.v("breakthrough","关闭输入输出流失败"); } } db = SQLiteDatabase.openOrCreateDatabase(file,null); Log.v("breakthrough","打开复制的数据库成功"); Cursor cursor = db.rawQuery("select _id,content from Demo","返回了Cursor成功"); list = (ListView)findViewById(R.id.list); Log.v("breakthrough","实例化list成功"); String ss = cursor.getColumnName(0); Log.v("break","实例化ss成功"); int a = cursor.getColumnCount(); Log.v("break","实例化a成功"); int b = cursor.getCount(); TextView text = (TextView)findViewById(R.id.text); Log.v("break","实例化b成功"); text.setText("行名是:"+ss + ",列数是:" + a +",行数是:"+ b); Log.v("break","text显示成功"); SimpleCursorAdapter adapter = new SimpleCursorAdapter( MainActivity.this, R.layout.line,cursor, new String[] {"_id","content"}, new int[] {R.id.text0,R.id.text}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); Log.v("break","绑定成功"); list.setAdapter(adapter); Log.v("breakthrough","成功运行"); } }
xml代码: activity_main.xml <LinearLayout 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" android:orientation = "vertical"> <TextView android:id = "@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ListView android:id = "@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
line.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id = "@+id/text0" android:layout_width = "match_parent" android:layout_height = "wrap_content"/> <TextView android:id = "@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 第八步:看结果。
结语:由于是我的第一篇博文,在叙述和表达上,都还存在不足,希望大家指正,如果发现文章中存在的描述不规范的地方,请在文章下方评论,我会在看见的第一时间改正。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|