利用SQLite Expert 工具将Excel数据导入SQLite

这是我第一次真正的写一篇博文,之前在CSDN里面学到了很多。我之前遇到了一个问题,我需要将我的Excel中的数据导入AVD(虚拟机)中的SQLite,但是在整个CSDN中找到的答案,不能说没有帮助,但是还是没有一次性的帮我解决这个我问题,因此,我想在这里将我的解决方案贴出来,来帮助那些遇到类似困难的同学,鉴于我是个初学者,我的文章没有一定的深度,但是我一定会将文章写得详细。

不多说,开始吧。说一下,我的大致方式是:将EXCEL保存为cvs格式,然后导入SQLite Expert 的可视化sqlite管理工具,然后放入assets中。然后利用代码写入复制到sqlite中。
第一步:打开Excel,建立一张表。第一行(主键)一定要设置为_id, 后面会解释。

利用SQLite Expert 工具将Excel数据导入SQLite_第1张图片

第二步:保存为CSV格式。

利用SQLite Expert 工具将Excel数据导入SQLite_第2张图片

第三步:利用记事本打开我们新建的Demo.csv。将编码改为UTF-8,防止在模拟器上运行发生文字乱码的现象。
利用SQLite Expert 工具将Excel数据导入SQLite_第3张图片
第四步:点开SQLite Expert数据库管理工具。点击File→New DataBase 新建一个Demo_db的数据库。
利用SQLite Expert 工具将Excel数据导入SQLite_第4张图片
第五步:右击刚刚建好的库,然后点击→import text file 导入建好的表。是不是很简单的。
利用SQLite Expert 工具将Excel数据导入SQLite_第5张图片
利用SQLite Expert 工具将Excel数据导入SQLite_第6张图片
点击Design→Indexs。将_id,设置为主键。然后然后点击ok, 然后再点击apply。
利用SQLite Expert 工具将Excel数据导入SQLite_第7张图片
利用SQLite Expert 工具将Excel数据导入SQLite_第8张图片
第六步:我们从上图中的File: F:\Dmeo\Demo_DB, (导入时我们的CVS格式表在哪里,数据库文件,就在哪里)找到它。

但是没有格式(有时会遇见,但有时不会遇见),一般来说,数据库都是.db格式。我们给它加上后缀名.db。(注意:必须点开文件夹选项,然后设置显示后缀名才行),然后复制到项目中的assets中去。

复制到assets中去。
利用SQLite Expert 工具将Excel数据导入SQLite_第9张图片
第七步:将该数据中Demo_DB中Demo表中的数据复制到模拟器中去(此处我不知道怎么描述)。代码如下。。
因为我们这里用的是适配器是SimpleCursorAdapter,返回的数据中必须包含字段:_id且必须为关键字(_id是主键)。如果返回的Cursor数据中没有包含_id, 字段,将无法绑定成功。
利用SQLite Expert 工具将Excel数据导入SQLite_第10张图片

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, 0, 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", null);
Log.v("breakthrough", "返回了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
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation = "vertical">
android:id = "@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
android:id = "@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>




line.xml

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:id = "@+id/text0"
android:layout_width = "match_parent"
android:layout_height = "wrap_content"/>
android:id = "@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

第八步:看结果。
利用SQLite Expert 工具将Excel数据导入SQLite_第11张图片
结语:由于是我的第一篇博文,在叙述和表达上,都还存在不足,希望大家指正,如果发现文章中存在的描述不规范的地方,请在文章下方评论,我会在看见的第一时间改正。









你可能感兴趣的:(Android基础学习——其它)