
在eclipse中需要自定义创建表工具类:比如;1、写一个DBHelper继承自SQLiteOpenHelperpublicclassDBHelperextendsSQLiteOpenHelper{//数据库的版本privatefinalstaticintDB_VERSION=1//数据库名privatefinalstaticStringDB_NAME="ladeng.db"privateContextmContext//我们直接用super调用父类的构造方法,这样我们在实例化DBHelper的时候只需要传入一个上下文参数就可以了publicDBHelper(Contextcontext){super(context,DB_NAME,null,DB_VERSION)this.mContext=context}//数据库不存在的时候,调用这个方法@OverridepublicvoidonCreate(SQLiteDatabasedb){createTables(db,0,0)}//版本号发生变化的时候,调用这个方法@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){//1.删除原来的表//2.调用onCreate重新创建数据库}/***建表语句,只需要一行就能建一个表*/privatevoidcreateTables(SQLiteDatabasedb,intoldVersion,intnewVersion){//createTable(Movie.class)返回的是sql建表语句//db.execSQL(sql)执行这条建表语句db.execSQL(createTable(Movie.class))}/***如果没传表明的话,默认使用类名作为表明*@paramclazz实体类*@return*/privateStringcreateTable(Classclazz){returncreateTable(clazz,clazz.getSimpleName())}/***真正的建表方法*@paramclazz实体类*@paramtableName表明*@returnsql建表语句*/privateStringcreateTable(Classclazz,StringtableName){//实例化一个容器,用来拼接sql语句StringBuffersBuffer=newStringBuffer()//sql语句,第一个字段为_ID主键自增,这是通用的,所以直接写死sBuffer.append("createtableifnotexists"+tableName+""+"(_IDINTEGERPRIMARYKEYAUTOINCREMENTNOTNULL,")//得到实体类中所有的公有属性Field[]fields=clazz.getFields()//遍历所有的公有属性for(Fieldfield:fields){//如果属性不为_id的话,说明是新的字段if(!field.getName().equals("_id")){//得到属性的基本数据类型Stringtype=field.getType().getSimpleName()//如果是String类型的属性,就把字段类型设置为TEXTif(type.equals("String")){sBuffer.append(field.getName()+"TEXT,")//如果是int类型的属性,就把字段类型设置为INTEGER}elseif(type.equals("int")){sBuffer.append(field.getName()+"INTEGER,")}}}//将最后的逗号删除sBuffer.deleteCharAt(sBuffer.length()-1)//替换成)表明sql语句结束sBuffer.append(")")//返回这条sql语句returnsBuffer.toString()}}2、Movie实体类,实体类中的属性就是表中的字段publicclassMovie{publicStringtitlepublicintratingpublicStringyearpublicStringgenrepublicStringcountrypublicintprice}3、在MainActivity.java中添加如下代码publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//实例化我们的DBHelper DBHelperdbHelper=newDBHelper(this)//调用了这个方法后,DBHelper中的onCreate才会执行 dbHelper.getReadableDatabase()}}4、创建结果:
C#下SQLite *** 作驱动dll下载:System.Data.SQLiteC#使用SQLite步骤:
(1)新建一个project
(2)添加SQLite *** 作驱动dll引用
(3)使用API *** 作SQLite DataBase
using System
using System.Data.SQLite
namespace SQLiteSamples
{
class Program
{
//数据库连接
SQLiteConnection m_dbConnection
static void Main(string[] args)
{
Program p = new Program()
}
public Program()
{
createNewDatabase()
connectToDatabase()
createTable()
fillTable()
printHighscores()
}
//创建一个空的数据库
void createNewDatabase()
{
SQLiteConnection.CreateFile("MyDatabase.sqlite")
}
//创建一个连接到指定数据库
void connectToDatabase()
{
m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqliteVersion=3")
m_dbConnection.Open()
}
//在指定数据库中创建一个table
void createTable()
{
string sql = "create table highscores (name varchar(20), score int)"
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection)
command.ExecuteNonQuery()
}
//插入一些数据
void fillTable()
{
string sql = "insert into highscores (name, score) values ('Me', 3000)"
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection)
command.ExecuteNonQuery()
sql = "insert into highscores (name, score) values ('Myself', 6000)"
command = new SQLiteCommand(sql, m_dbConnection)
command.ExecuteNonQuery()
sql = "insert into highscores (name, score) values ('And I', 9001)"
command = new SQLiteCommand(sql, m_dbConnection)
command.ExecuteNonQuery()
}
//使用sql查询语句,并显示结果
void printHighscores()
{
string sql = "select * from highscores order by score desc"
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection)
SQLiteDataReader reader = command.ExecuteReader()
while (reader.Read())
Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["score"])
Console.ReadLine()
}
}
}
// 连接字符串 data source=d:\test.db3password=1234SQLiteConnectionStringBuilder connStr = new SQLiteConnectionStringBuilder()
connStr.DataSource = @"d:\test.db3"
connStr.Password = "1234"
conn = new SQLiteConnection(connStr.ToString())
conn.Open()
// 插入数据
string SQL = "INSERT INTO test(k) VALUES(:k)"
SQLiteCommand cmd = conn.CreateCommand()
cmd.CommandText = SQL
// 取图标,准备插入到数据库BLOB字段
FileStream picStream = File.OpenRead(@"d:\1.bmp")
byte[] bArray = new byte[picStream.Length]
picStream.Read(bArray, 0, bArray.Length)
picStream.Close()
cmd.Parameters.Add("k", DbType.Binary).Value = bArray // BLOB
cmd.ExecuteNonQuery()
//取出数据
cmd.CommandText = "SELECT k FROM test"
System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader()
while (reader.Read())
{
MemoryStream streamImage = new MemoryStream(reader["k"] as byte[])
pictureBox1.Image = Image.FromStream(streamImage)
streamImage.Close()// 关闭流
}
reader.close()
conn.close()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)