当前位置: 首页 > article >正文

基于C#+SQLite开发数据库应用的示例

SQLite数据库,小巧但功能强大;并且是基于文件型的数据库,驱动库就是一个dll文件,有些开发工具
甚至不需要带这个dll,比如用Delphi开发,用一些三方组件;数据库也是一个文件,虽然是个文件,但却
具有关系型数据库的大多数特征,查询语句也是长得基本一样,所以对应学习数据库操作很方便。
比起前微软的Access数据库那只能说,SQLite强大的太多。

在 Visual Studio 中,可以通过以下步骤安装:

打开 Visual Studio,点击 "工具" -> "NuGet 包管理器" -> "管理解决方案的 NuGet 包" - 在搜索框中输入 "SQLite",然后安装 "System.Data.SQLite" 包。

打开VS,新建一个.NET项目,选择 C# Windows 桌面,Windows窗体应用(.NET Framework)

界面上拖放相应控件

关键事件代码 如下

        private void button8_Click(object sender, EventArgs e)
        {

            string dataSource = "test.db"; // 数据库文件名
            // 连接数据库
            using (SQLiteConnection connection = new SQLiteConnection($"Data Source={dataSource};Version=3;"))
            {
                connection.Open(); // 打开连接

                // 创建表
                string createTableQuery = "CREATE TABLE IF NOT EXISTS Customers (Id INTEGER PRIMARY KEY, Name TEXT, Age INT,Phone TEXT)";
                using (SQLiteCommand createTableCommand = new SQLiteCommand(createTableQuery, connection))
                {
                    createTableCommand.ExecuteNonQuery(); // 执行创建表的SQL语句
                }

                // 插入数据
                string insertDataQuery = "INSERT INTO Customers (Name, Age, Phone) VALUES (@Name, @Age, @Phone)";
                using (SQLiteCommand insertDataCommand = new SQLiteCommand(insertDataQuery, connection))
                {
                    insertDataCommand.Parameters.AddWithValue("@Name", "John"); // 设置参数值,避免SQL注入
                    insertDataCommand.Parameters.AddWithValue("@Age", 25);
                    insertDataCommand.Parameters.AddWithValue("@Phone", "123456");
                    insertDataCommand.ExecuteNonQuery(); // 执行插入数据的SQL语句
                }

                // 查询数据
                string selectDataQuery = "SELECT * FROM Customers";
                using (SQLiteCommand selectDataCommand = new SQLiteCommand(selectDataQuery, connection))
                {
                    using (SQLiteDataReader reader = selectDataCommand.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            int id = Convert.ToInt32(reader["Id"]); 
                            string name = Convert.ToString(reader["Name"]);
                            int age = Convert.ToInt32(reader["Age"]);
                            string phone = Convert.ToString(reader["Phone"]);
                            Console.WriteLine($"ID: {id}, Name: {name}, Age: {age}, Phone: {phone}");
                        }
                    }
                }

                SQLiteCommand sqlCommand = new SQLiteCommand("select * from Customers", connection);
                sqlCommand.ExecuteNonQuery();

                DataTable dataTable = new DataTable("Customers");
                SQLiteDataAdapter sqlAdapter = new SQLiteDataAdapter(sqlCommand);
                sqlAdapter.Fill(dataTable);

                dataGridView1.DataSource = dataTable.DefaultView;
                sqlAdapter.Update(dataTable);
            }
        }

程序运行结果


http://www.kler.cn/a/414605.html

相关文章:

  • mini-spring源码分析
  • 【jvm】什么是动态编译
  • 如何借助AI生成PPT,让创作轻松又高效
  • 详解Elasticsearch数据建模:实例讲解与实战技巧
  • Swin-T图像论文复现
  • 【JavaEE 初阶】⽹络原理 - 初识
  • 从传统IT运维到智能化运维的转型之路
  • 数据结构 (10)队列
  • linux基础2
  • 分布式搜索引擎Elasticsearch(一)
  • golang每日一题:context、goroutine相关
  • 【Ubuntu 24.04】How to Install and Use NVM
  • 【算法day2】数组:滑动窗口、前缀和及指针控制
  • 轻松解析 PDF 文档:深入了解 Python 的 pdfplumber 库
  • 原生html+css+ajax+php图片压缩后替换原input=file上传
  • 【配置】pycharm运行的项目如何修改名称(项目名称、模块名称)
  • 【AI系统】分布式通信与 NVLink
  • linux桌面qt应用程序UI自动化实现之dogtail
  • 3.5 Ui文件(界面文件)
  • Qml-TabBar类使用
  • 解决水库安全监测难题 长期无外接电源 低功耗设备智能化监测系统
  • Qt桌面应用开发 第八天(读写文件 文件编码 文件流)
  • 路由引入中次优路由和路由环路问题
  • Linux:进程的概念
  • c/c++ 用easyx图形库写一个射击游戏
  • 探索C/C++的奥秘之C++中的继承