1.以操作SQLite为例.先下载Dapper,项目引用添加Dapper.dll,然后入下

SQLiteConnectionStringBuilder sb = new SQLiteConnectionStringBuilder();
sb.DataSource = @"D:sqlite.db";
SQLiteConnection con = new SQLiteConnection(sb.ToString());
con.Open();
string sql = "select * from user";
foreach( User u in con.Query<User>(sql))
{
Console.WriteLine(u.Name);
}
con.Close();

参数查询:

 SQLiteConnectionStringBuilder sb = new SQLiteConnectionStringBuilder();
sb.DataSource = @"D:\\sqlite.s3db"; SQLiteConnection con = new SQLiteConnection(sb.ToString());
con.Open(); var data = con.Query("select * from t_session where appkey=@appkey", new
{
appkey = appKey
}); con.Close();

添加:

  con.Execute(" insert into t_session(appkey,appsecret,updatetime)values(@appkey,@appsecret,@updatetime)"
, new
{
appkey = appKey,
appsecret = appSecret,
updatetime = DateTime.Now
});

更新:

//更新
con.Execute("update t_session set appsecret=@appsecret where appKey=@appKey ",
new
{
appKey = appKey,
appsecret = appSecret
});

今天学习用Sqlite结果总出错:no such table: MyFriendInfo

翻译一下就是:没有找到MyFriendInfo表。

怎么会这样呢?在数据库里面明明有表的。

调试和查看原文件各级目录发现:

当Sqlite找不到相关的表的时候会自动创建。这下可明白了。问题出在路径上。

我在App.Config文件中是这样写的

  1. <appSettings>
  2. <add key="SqlConfiguration" value="Data Source= |DataDirectory|\MyFriendList.sqlite; Integrated Security='True'"/>
  3. </appSettings>

|DataDirectory| 的作用是定位到App_Data文件夹下面,源程序则是生成在\bin\Debug\目录下面,结果在Debug目录下面发现了Sqlite自动生成的数据库。这下明白了。不过在做WINFORM程序的时候如果还要安装,那数据库路径在Config文件中是不能写死的。放在Debug目录下面应该是一个解决办法吧。

如果是WEB应用程序这个问题就好解决了。

Dapper C# 访问SQLite的更多相关文章

  1. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1   源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...

  2. 应用EF访问SQLite数据

    创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...

  3. 【Android】13.4 使用SQLite.NET.Async-PCL访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 这一节演示如何利用以异步方式(async.await)访问SQLite数据库. 二.示例4运行截图 下面左图为初始 ...

  4. 【Android】13.2 使用自定义的CursorAdapter访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 SQliteDemo1的例子演示了SimpleCursorAdapter的用法,本节我们将使用用途更广的自定义的游 ...

  5. 【Android】13.1 用Android自带的API访问SQLite数据库

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 这一节我们先来看看如何直接用Android自带的API创建和访问SQLite数据库. 1.创建SQLite数据库 ...

  6. 【Android】13.0 第13章 创建和访问SQLite数据库—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们 ...

  7. 并发访问sqlite数据库出现databse is locked的错误的一个解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在并发访问sqlite数据库会出现这样一个错误:databseis locked,这是sqlite数据库对并发支持不太 ...

  8. 【C#】使用EF访问Sqlite数据库

    原文:[C#]使用EF访问Sqlite数据库 1. 先上Nuget下载对应的包 如图,搜索System.Data.SQLite下载安装即可,下载完之后带上依赖一共有这么几个: EntityFramew ...

  9. 以EntifyFramework DBFirst方式访问SQLite数据库

    前面一直在找EF Code First方式来访问SQLite数据库,后面得出的结论是SQLite不支持 Code First, 虽然有非官方的库SQLite.CodeFirst可以使用,但一直没搞成功 ...

随机推荐

  1. 去掉删除discuz x3.2 的-Powered by Discuz!

    如图discuz论坛 网站标题栏的尾巴powered by discuz!是不是很想删除呢,特别是为什么会剩下短线呢?下面就叫你如何准确删除或者修改. 工具/原料 8UFTP(使用自己熟悉的网站文件上 ...

  2. Eclipse 自动生成getter 和 setter

    示例: public String View;//右击View > Source > Generate Getters and Setters... public String view; ...

  3. void 0 === undefined

    http://www.cnblogs.com/fsjohnhuang/p/4146506.html

  4. easelJS 初始入门

    easelJS 初始入门 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. #DP# ----- OpenJudge最大子矩阵

    OpenJudge 1768:最大子矩阵 总时间限制: 1000ms   内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 ...

  6. jQuery插入节点(移动节点)

    jQuery插入节点(移动节点) <%@ page language="java" import="java.util.*" pageEncoding=& ...

  7. MyBatis 模糊查询

    <!--${}是不进行预编译的,会直接进行sql语句的拼接:{}中的内容必须通过Map或者查询对象中获得--><select id="selectPersonByName& ...

  8. HDU5879(打表)

    Cure Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. Windows 10 IoT Core环境配置中的那些坑

    我使用的设备是Raspberry Pi 3B,想来国内的嵌入式玩具应该还是树莓派最常见吧.这段时间一直在捣鼓Win10 IoT,结果发现,从安装一直到编码调试一路下来全都是坑.写这篇东西一个是为了备忘 ...

  10. POJ1753 搜索

    Flip Game Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on ...