在没有使用SQLite这种轻量级的数据库之前,只使用过Sqlserver2008进行数据的增删改查,公司使用的是大型的ORACLE数据库,还没有真正的会使用它。那时候觉得数据库很庞大,然而遇到SQLite以后,发现有这么个迷你的小数据库,就像女生的包包随身携带的小镜子一样,放在哪里都能使用。

废话少说,SQLite提供了如何连接、关闭等数据库操作,但真正的增、删、改、查等语句同Sqlserver、ORACLE是一样的。

首先,是创建SQLite数据库文件(写了一个方法):

Public static void CreateDataBaseFile()

{

If(!File.Exists(dataBaseName))

{

SqliteConnection.CreateFile(dataBaseName);

}

}

注意:默认SQLite数据库文件创建在当前应用程序根目录下,如果需要更改文件路径,记得把文件路径一块加上。

比如:SQLiteConnection.CreateFile(sceneName
+
"\\"
+
dataSource);

 

打开某个数据库,也要把文件路径加上,如果不需要更改,就无所谓啦….

DataSource="
+
Environment.CurrentDirectory
+
"\\"
+
pack.SceneName
+
"\\"
+
pack.BattleID
+
".db";

 

然后,增删改查语句,以插入语句为例:

1、查询语句

SELECT *FROM TABLE_BATTLE;

 

2、更新语句

UPDATE TABLE_BATTLE SET 字段1='新值1';

 

3、删除语句

DELETE FROM 表

 

4、插入语句

//string connStr = @"datasource=DEPTDATABASE";


//using (SQLiteConnection conn = new SQLiteConnection(connStr))


//{


// conn.Open();


// using (var transaction = conn.BeginTransaction())


// {


// try


// {


// SQLiteCommand cmd = conn.CreateCommand();


// cmd.Parameters.Add(cmd.CreateParameter());


// cmd.CommandText = "INSERT INTO 表名(字段1, 字段2, 字段3) VALUES(@字段1,@字段2,@字段3)";


// cmd.Parameters.AddWithValue("@字段1",值1);


// cmd.Parameters.AddWithValue("@字段2",值2);


// cmd.Parameters.AddWithValue("@字段3",值3);


// cmd.ExecuteNonQuery();


// transaction.Commit();


// conn.Close();


// }


// catch (Exception e)


// {


// Console.WriteLine(e.Message);


// transaction.Rollback();


// }


// }


//}

 

使用这种方法插入二进制字节数据是没有问题的。

当我使用拼接字符串格式的Sql语句就有问题了,因为使用拼接字符串格式,编译器就会认为这句是字符串(string类型),所以即使里面的数据有二进制格式,也被当做字符串处理(数字格式除外),所以就会报错。

下面这句是已经修改后的,所以正常运行。(用一个占位符表示,当使用时再赋值)

var
sql
=
"INSERT INTO TABLE_BATTLE_HISTORY(BATTLE_ID,TIME_STAMP,OBJECT_NAME,SYNC_TYPE,

DETAIL_DATA) VALUES( '"
+
accData.battleId
+
"','"
+
accData.timeStamp
+
"','"
+
accData.objectName
+
"','"
+
accData.syncType
+
"',@DETAIL_DATA)";

 

二进制数据可以正常存到数据库:

 

使用C#书写SQLite数据库增删改查语句(以及插入byte[]时遇到的问题总结)的更多相关文章

  1. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  2. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  3. MySQL数据库(增删改查语句)

    MySQL数据库(增删改查语句)一.登录数据库:---->  mysql -uroot -proot;(对应用户名和密码)二.SQL语句:    数据定义语言DDL  用来定义数据库.表.列,关 ...

  4. IOS sqlite数据库增删改查

    1.简单介绍 简单封装sqlite数据库操作类 BaseDB 用于完毕对sqlite的增删改查.使用前先导入libsqlite3.0.dylib库 2.BaseDB.h // // BaseDB.h ...

  5. SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...

  6. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

  7. SQLite数据库增删改查

    一:SQLite数据库简介: SQLite是一种轻量级的关系型数据库,官网:http://www.sqlite.org/. SQLite数据库文件存在于移动设备的一下目录中:data->data ...

  8. 通过API函数来控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import and ...

  9. 通过Sql语句控制SQLite数据库增删改查

    person类属性有Intenger id,String name,Intenger  age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...

随机推荐

  1. 树形DP新识

    HihoCoder: 1041(点) 1063(边) 1035(边) HDU1520 (签到) HDU2415(emm) 目前我遇到的树形DP有两类: ∂:点处理,大概就是点的乱搞,比如找一些点,这些 ...

  2. js实现图片上传

    //上传图片 function uploadImg(){ //loading $("#loading").ajaxStart(function() { $(this).show() ...

  3. 在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中

    NuGet 提供了工具类型的包支持,生成一个基于 .NET Core 的 dll 或者基于 .NET Framework 的 exe 之后,你几乎可以对项目做任何事情.但是,默认情况下,NuGet 不 ...

  4. .NET Core/Framework 创建委托以大幅度提高反射调用的性能

    都知道反射伤性能,但不得不反射的时候又怎么办呢?当真的被问题逼迫的时候还是能找到解决办法的. 为反射得到的方法创建一个委托,此后调用此委托将能够提高近乎直接调用方法本身的性能.(当然 Emit 也能够 ...

  5. iPhone4s 9.2.1安装cydia(越狱)

    依据网上资料而来 主要就是上图视频中的6步骤选项,不要选错. 1.prepare for jailbreak 2.选择Accept 3. proceed with jailbreak 4.begin ...

  6. Java Garbage Collection

    在C/C++中,需要自己负责object的creation 和 destruction. 如果忘记了destruction, 就容易出现OutOfMemoryErrors. Java中会有GC直接处理 ...

  7. docker could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network

    原因: 无法进行网络分配了 解决方法: // 所有的网络 docker network ls // 删除不用的,腾出多余的 docker network rm <networkname> ...

  8. #define用法

    1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i<MAXTIME) { // } 编译器在处理 ...

  9. 在Centos中yum安装和卸载软件的使用方法(转)

    在Centos中yum安装和卸载软件的使用方法 安装方法 安装一个软件时 yum -y install httpd 安装多个相类似的软件时 yum -y install httpd* 安装多个非类似软 ...

  10. 如何使用JSON格式 POST数据到服务器

    1. JSON的数据格式a) 按照最简单的形式,可以用下面这样的 JSON 表示名称/值对: { "firstName": "Brett" } b) 可以创建包 ...