创建 SQLite 数据库和表

2023-11-27

在 C# 应用程序代码中,我想创建一个或多个 SQLite 数据库并与之交互。

如何初始化一个新的 SQLite 数据库文件并打开它进行读写?

数据库创建完成后,如何执行DDL语句创建表?


下一个链接将为您带来一个很棒的教程,这对我帮助很大!

如何在 C# 中使用 SQLITE:我几乎使用了那篇文章中的所有内容来为我自己的 C# 应用程序创建 SQLite 数据库。

前提条件

  1. 下载 SQLite.dll

    • 通过添加SQLite DLL 的手动
    • 或通过使用NuGet
  2. 将其添加为您的项目的参考

  3. 在类顶部使用以下行引用代码中的 dll:using System.Data.SQLite;

代码示例

下面的代码创建一个数据库文件并向其中插入一条记录:

// this creates a zero-byte file
SQLiteConnection.CreateFile("MyDatabase.sqlite");

string connectionString = "Data Source=MyDatabase.sqlite;Version=3;";
SQLiteConnection m_dbConnection = new SQLiteConnection(connectionString);
m_dbConnection.Open();

// varchar will likely be handled internally as TEXT
// the (20) will be ignored
// see https://www.sqlite.org/datatype3.html#affinity_name_examples
string sql = "Create Table highscores (name varchar(20), score int)";
// you could also write sql = "CREATE TABLE IF NOT EXISTS highscores ..."
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

sql = "Insert into highscores (name, score) values ('Me', 9001)";
command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

m_dbConnection.Close();

在 C# 中创建创建脚本后,您可能想要添加回滚事务。它将确保数据最终将作为对数据库的原子操作以一大块的形式提交,而不是以小块的形式提交,例如,数据可能会在第 5 个或第 10 个查询时失败。

如何使用交易的示例:

using (TransactionScope transaction = new TransactionScope())
{
   //Insert create script here.

   // Indicates that creating the SQLiteDatabase went succesfully,
   // so the database can be committed.
   transaction.Complete();
}

第三者编辑

要读取记录,您可以使用ExecuteReader()


sql = "SELECT score, name, Length(name) as Name_Length 
       FROM highscores WHERE score > 799";
command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();

while(reader.Read())
{
   Console.WriteLine(reader[0].ToString()  + " " 
                  +  reader[1].ToString()  + " " 
                  +  reader[2].ToString());            
}
dbConnection.Close();

另请参阅此交易范围示例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 SQLite 数据库和表 的相关文章

随机推荐

  • 为什么 NetBeans 在 OS X 上运行我的程序,但不将其构建到 JAR 中?

    tl dr 我缺少什么依赖项 允许 NetBeans 在内部正常运行 OS X 集成程序 但无法清理并将其构建为 JAR 我正在尝试制作一个集成到 OS X 中的 Java 程序 但我希望也将其发布到 Windows 和 Linux 上 为
  • 如何从 Maven Reactor 构建中排除模块?

    我们有一个 Maven 2 项目 其中有很多模块 例子
  • 任务“:app:validateSigningRelease”执行失败。颤振误差

    我想发布我的应用程序 但遇到了这个问题 FAILURE Build failed with an exception What went wrong Execution failed for task app validateSigning
  • NSPredicate 未执行

    这很有趣 在我的应用程序中 我在数据库中创建了数千个条目 在另一个线程中 我使用 MagicalRecord 一切似乎都工作正常 从背景 前景 上下文的角度来看 当我在主线程中尝试获取 刚刚插入 的数据时 我发现了以下行为 NSArray
  • 从 edittext 中选定的文本中删除样式

    我的应用程序应该允许用户在 Edittext 中设置输入或选定文本的样式 其中一些样式有下划线 删除线 粗体和斜体 它们很容易添加 但我不知道如何将它们移除 and 我如何确定该样式是否已添加到选定的文本 添加样式的代码 Spannable
  • 内置赋值运算符的返回类型是什么?

    我刚刚开始 C 我对赋值和取消引用运算符的返回类型有点困惑 我正在关注 C Primer 这本书 在各种场合 作者都说赋值运算符的返回类型是对左手操作数类型的引用 但后来 他说返回类型是左手操作数的类型 我已经提到了 C 11 Standa
  • PHP-获取数组值的键名

    我有一个数组如下 function example some stuff here that pushes items with dynamically created key strings into an array return ar
  • 最佳实践:Android 上的布局(编程与 XML)

    这个问题已经困扰我一段时间了 我已经在 Android 平台上开发了几个应用程序 并且总是发现自己求助于 Java 代码来构建布局 在专业的开发环境中 这是可以接受的吗 或者 XML 文件应该成为首选方法 我通常发现 XML 是一种更乏味的
  • 如何在同一个 Ruby Rails 项目中配置 MongoMapper 和 ActiveRecord

    我有一个现有的生产 Ruby Rails 应用程序 我希望在时间允许的情况下将其迁移到 MongoDB 因为不能一次性全部重写 我希望能够在我接触到旧课程时就弃用它们 我打算使用 MongoMapper 我找不到任何人解释如何设置数据库配置
  • com.firebase.client.FirebaseException:无法解析类为 CLASS_NAME android 的节点

    我在使用 Firebase 更新现有值时遇到以下异常updateChildren方法 com firebase client FirebaseException Failed to parse node with class class c
  • 如何开始使用 Java 构建 Web 应用程序? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想开始使用 java 进行 Web 开发 不知道如何开始 该学什么 或者什么是最好学习和使用的 Web 框架 帮帮我 我假设您只是 Web 应用程序的新手 而不是 Java 本
  • 超类中的私有方法可以在子类中重写吗?

    Java中私有方法可以被重写吗 如果不是 那么下面的代码如何工作 class Base private void func System out println In Base Class func method class Derived
  • 如何解决UITableView滚动缓慢的问题

    我是第一次在真实设备上进行测试 在修复了一些明显的性能问题后 我陷入了如何平滑滚动的困境 这就是我所做的 数据在sqlite中 我有一个带有标题的小数组 我在每个标头数组中都有来自数据库的 Id 列表 e g 标头 A Id 1 2 标头
  • 我可以替换 Java 正则表达式中的组吗?

    我有这段代码 我想知道是否可以仅替换 Java 正则表达式中的组 而不是所有模式 代码 Pattern p Pattern compile d d String input 6 example input 4 Matcher m p mat
  • 将 JAX-RS bean 验证错误消息绑定到视图

    我们可以使用 bean 验证轻松验证 JAX RS 资源类字段或方法参数 如下所示 Size min 18 max 80 message 年龄必须在 min 和 max 之间 String Age 将错误消息绑定到 JSP 页面的最简单方法
  • GPS 是否已激活 - Flutter

    有没有办法在 Flutter 中找出 GPS 是激活还是停用 我使用插件location然而 我只得到位置 而不是 GPS 的状态 更新 地理定位器8 0 1 bool isLocationEnabled await Geolocator
  • API Youtube,如何获得喜欢和不喜欢

    在一个网站上 我使用 API Youtube 和 ZendGdata 来检索用户的所有视频 并使用视频及其信息创建网页 现在我需要在我的网站上添加一个喜欢或不喜欢视频的系统 并且我需要检索喜欢和不喜欢的数量 是的 这里有2个问题 所以 我检
  • selectonemenu 出现错误 java.lang.String 无法转换为 javax.faces.model.SelectItem

    我想填写一个选择菜单 但总是出现此错误 java lang String cannot be cast to javax faces model SelectItem 这是代码 public class ToolsJIRA implemen
  • 仅将 ASP.NET MVC 应用程序管理站点锁定到 LocalHost

    我有一个 ASP NET MVC 网站 我想向其中添加一个小型管理页面 我遇到的问题是 我将全部部署它 但 SSL 不可用 我同意要求管理员远程桌面并使用本地浏览器来执行管理 这可以做到吗 我基本上希望得到与
  • 创建 SQLite 数据库和表

    在 C 应用程序代码中 我想创建一个或多个 SQLite 数据库并与之交互 如何初始化一个新的 SQLite 数据库文件并打开它进行读写 数据库创建完成后 如何执行DDL语句创建表 下一个链接将为您带来一个很棒的教程 这对我帮助很大 如何在