.net调用sqlite数据库

我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到sqlite数据库。

我们在开发通讯录的时候,就希望通讯录在联网或者断网的时候,都可以查询通讯录的信息。那就需要将通讯录的内容要同步到本地,sqlite是比较轻便的数据库,非常利于存储在本地。解决方案很简单,联网的时候,我直接访问sql server数据库服务器,但是在网络不通的时候,我们只需要读取sqlite的数据就可以了。

(1)创建sqlite表

我下载了一个SQLite Expert Professional 3工具,直接创建存储通讯录信息的表。SQLite Expert Professional 3工具挺好用的,不过正式版是需要钱的。在创建数据表的过程中,我们要注意的地方就是DataTime类型的数据如何保存。在sqlite数据库里面,我认为最好的方式就是将日期保存为字符串就好了,如果需要的时候,取出来再处理。

(2)引入dll

在使用sqlite数据库的时候,我们在项目工程中引入System.Data.SQLite.dll

(3)C#使用sqlite数据库的类

这是我们这篇文章最重要的内容,就是分享一下sqlite操作的基本类,代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SQLite;
using System.Data;

namespace AddressBook
{
    class SQLiteHelper
    {
        private SQLiteConnection conn = null;

        private string connString = string.Empty;

        public string ConnString
        {
            get { return connString; }
            set { connString = value; }
        }

        private string err = string.Empty;

        public string Err
        {
            get { return err; }
            set { err = value; }
        }

        public SQLiteHelper()
        {
            string connString = "Data Source =" + Environment.CurrentDirectory + "/AddressBook.db";
            conn = new SQLiteConnection(connString);//创建数据库实例,指定文件位置
            //conn.Open();//打开数据库,若文件不存在会自动创建
        }

        /// <summary>
        /// 创建表
        /// </summary>
        /// <returns></returns>
        public int CreateTables(string sql)
        {
            SQLiteCommand cmdCreateTable = new SQLiteCommand(sql, conn);
            cmdCreateTable.ExecuteNonQuery();//如果表不存在,创建数据表

            return 1;
        }

        /// <summary>
        /// 操作数据库
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public int ExecNoQuery(string sql)
        {
            int retValue = -1;

            try
            {
                conn.Open();

                SQLiteCommand cmd = new SQLiteCommand(sql, conn);

                retValue = cmd.ExecuteNonQuery();

                conn.Close();
            }
            catch (Exception ex)
            {
                err = ex.Message;
                return -1;
            }

            return retValue;
        }

        /// <summary>
        /// 获取科室数据
        /// </summary>
        /// <returns></returns>
        public DataSet GetDataSet(string sql)
        {
            try
            {
                DataSet dataset = new DataSet();
                SQLiteDataAdapter adapter = new SQLiteDataAdapter();
                adapter.SelectCommand = new SQLiteCommand(sql, conn);
                adapter.Fill(dataset);
                return dataset;
            }
            catch (Exception ex)
            {
                err = ex.Message;
                return null;
            }
        }

        /// <summary>
        /// 返回1个字符串
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public string ExecReturenOne(string sql)
        {
            string result = string.Empty;
            try
            {
                conn.Open();

                SQLiteCommand cmd = new SQLiteCommand(sql, conn);

                object obj = cmd.ExecuteScalar();

                if (obj != null)
                {
                    result = obj.ToString();
                }

                conn.Close();
            }
            catch (Exception ex)
            {
                if (conn.State == System.Data.ConnectionState.Open)
                {
                    conn.Close();
                }

                err = ex.Message;
                return "";
            }

            return result;
        }
    }
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 12:32:33

.net调用sqlite数据库的相关文章

RT/Metro商店应用如何调用SQLite数据库

RT/Metro商店应用如何调用SQLite数据库 使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件).还有Visual C++ Runtime Package(如:Microsoft Visual C++ 2013 Runtime Package for Windows), 同时,项目生成要修改为X86或者X64,总之不能使有和AnyCPU.我这里使用的是X86. private async void Create() { //数据

在Android 中调用sqlite数据库

1在Android studio 工程中gradle文件夹右击新建assets文件夹.将建好的sqlite数据库导入其中. 2在主activity中判断app是否是第一次启动调用如下方法: /**检查APP是否为第一次启动*/private int CheckFirstActivate(){ /*设定数据库转移状态*/ int SetSQLiteDatabase_state = 0; /*检查APP是否为第一次启动&转移数据库*/ SharedPreferences sharedPreferen

[Unity]SQLite-C#调用 SQLite数据库-Unity操作

SQLite数据库-Unity操作 项目开发的时候,经常会遇到的一种需求,数据存储 离线缓存的数据类型很多,大致分成两类 字符串文本数据 多媒体数据 字符串数据的类型只有字符串,但是结构有很多: xml json md5 base64 普通字符串 多媒体数据的类型: 图片(jpg,png,gif...) 音频(mp3,aif...) 视频(mp4,mpv) 通常用数据库来存储字符串文本类型的数据,但是需要注意的是数据库同时也能存储多媒体类型的数据 关系数据库 在一个给定的应用领域中,所有实体及实

Android调用Sqlite数据库时自动生成db-journal文件的原因

数据库为了更好实现数据的安全性,一半都会有一个Log文件方便数据库出现意外时进行恢复操作等.Sqlite虽然是一个单文件数据库,但麻雀虽小五脏俱全,它也会有相应的安全机制存在 这个journal文件便是Sqlite的一个临时的日志文件,主要用于sqlite事务回滚机制,在事务开始时产生, 在事务结束时删除.当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行时进行事务回滚. 在android模式下,journal文件是永久的留在磁盘上不会被自动清除的.如果没有发生事务回滚那么.db-

Qt for Android 打包 SQLite 数据库

Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面了, QT在打包apk的时候会自动打包这个目录里面的东西进去的  本文用菊子曰发布

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

cordova调用本地SQLite数据库的方法

第一篇技术博客,写下来和大家分享今天所学,其次自己也巩固一下. 整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库.首先我并不是用eclipse来编程的,而是用cordova建立project后直接用notepad编辑www下的index文件. 一.cordova的下载安装和建立project的方法 该部分不是文章重点,抽空另开一篇文章详细介绍.官网上有相关教程:http://cordova.apache.org/docs/en/5.0.0/guide_cli_index

在Android程序中使用已有的SQLite数据库

已经将这篇文章迁移至 Code问答,你也能够到这里查看这篇文章,请多多关注我的新技术博客CodeWenDa.com 在中文搜索中,没有找到一篇比較好的关于怎样在Android应用中使用自己事先创建好的数据库的文章,于是在谷歌上找到这篇英文文章,依照它的步骤,測试成功.决定把这篇文章大致的翻译一下,想看原文的能够点击这里:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ .

iOS中 FMDB第三方SQLite数据库 UI_20

1.什么是FMDB? FMDB是iOS平台下SQLite数据库,只不过它是OC方式封装了C语言的SQLite语句,使用起来更加面向对象 2.FMDB的优点:1.使用起来更加面向对象; 2.对比苹果自带的 Core Data 数据管理工具更加的轻量级,更加的灵活,而且FMDB支持跨平台; 3.提供多线程下的数据安全保护机制,有效地防止数据混乱 3.FMDM中重要的类: FMDBDataBase: 它代表一个数据库对象,(我们需要创建数据库对象时就使用这个类) FMDBDataBaseQueue: