SQLiteHelper class:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SQLite;
using System.Windows.Forms;
namespace TestSQLite
{
public class SqliteHelper
{
//连接字符串
private static string str ="Data source="+ AppDomain.CurrentDomain.BaseDirectory + "\\DATA.db"; /// <summary>
/// 增删改
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string sql, params SQLiteParameter[] param)
{
try
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
con.Open();
if (param != null)
{
cmd.Parameters.AddRange(param);
} string sql2 = cmd.CommandText;
//con.Close();
return cmd.ExecuteNonQuery();
}
}
}
catch (SQLiteException se)
{
return 0;
}
} /// <summary>
/// 增删改
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string sql)
{
try
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
con.Open();
string sql2 = cmd.CommandText;
con.Close();
return cmd.ExecuteNonQuery();
}
}
}
catch (SQLiteException se)
{
return 0;
}
} /// <summary>
/// 查询
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>首行首列</returns>
public static object ExecuteScalar(string sql)
{
try
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(con))
{
con.Open();
cmd.CommandText = sql;
return cmd.ExecuteScalar();
}
}
}
catch(Exception ex){
MessageBox.Show(ex.Message );
return null; } } /// <summary>
/// 查询
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>首行首列</returns>
public static object ExecuteScalar(string sql, params SQLiteParameter[] param)
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
con.Open();
if (param != null)
{
cmd.Parameters.AddRange(param);
} return cmd.ExecuteScalar();
}
}
} /// <summary>
/// 多行查询
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>SQLiteDateReader</returns>
public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] param)
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
{
if (param != null)
{
cmd.Parameters.AddRange(param);
}
try
{
con.Open();
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
con.Close();
con.Dispose();
throw ex;
}
}
} } /// <summary>
/// 查询多行数据
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>一个表</returns>
public static DataTable ExecuteTable(string sql, params SQLiteParameter[] param)
{
DataTable dt = new DataTable();
using (SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, str))
{
if (param != null)
{
sda.SelectCommand.Parameters.AddRange(param);
}
sda.Fill(dt);
}
return dt;
} /// <summary>
/// 数据插入
/// 20180725
/// </summary>
/// <param name="tbName">表名</param>
/// <param name="insertData">需要插入的数据字典</param>
/// <returns>受影响行数</returns>
public static int ExecuteInsert(string tbName, Dictionary<String, String> insertData)
{
string point = "";//分隔符号(,)
string keyStr = "";//字段名拼接字符串
string valueStr = "";//值的拼接字符串 List<SQLiteParameter> param = new List<SQLiteParameter>();
foreach (string key in insertData.Keys)
{
keyStr += string.Format("{0} `{1}`", point, key);
valueStr += string.Format("{0} @{1}", point, key);
param.Add(new SQLiteParameter("@" + key, insertData[key]));
point = ",";
}
string sql = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", tbName, keyStr, valueStr); //return sql;
return ExecuteNonQuery(sql, param.ToArray()); } /// <summary>
/// 执行Update语句
/// 20180725
/// </summary>
/// <param name="tbName">表名</param>
/// <param name="where">更新条件:id=1</param>
/// <param name="insertData">需要更新的数据</param>
/// <returns>受影响行数</returns>
public static int ExecuteUpdate(string tbName, string where, Dictionary<String, String> insertData)
{
string point = "";//分隔符号(,)
string kvStr = "";//键值对拼接字符串(Id=@Id) List<SQLiteParameter> param = new List<SQLiteParameter>();
foreach (string key in insertData.Keys)
{
kvStr += string.Format("{0} {1}=@{2}", point, key, key);
param.Add(new SQLiteParameter("@" + key, insertData[key]));
point = ",";
}
string sql = string.Format("UPDATE `{0}` SET {1} WHERE {2}", tbName, kvStr, where); return ExecuteNonQuery(sql, param.ToArray()); } /// <summary>
/// 查询
/// 20180723
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="param">sql参数</param>
/// <returns>首行首列</returns>
public static DataTable GetDataTable(string sql)
{
try
{
using (SQLiteConnection con = new SQLiteConnection(str))
{
using (SQLiteCommand cmd = new SQLiteCommand(sql , con))
{
con.Open();
SQLiteDataAdapter ad = new SQLiteDataAdapter(cmd);
DataTable tb = new DataTable();
ad.Fill(tb);
con.Close();
return tb; }
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null; } } }
}

  

Test:

   //see one value where .........
MessageBox.Show("" + SqliteHelper.ExecuteScalar("select uid from members where uid<>''"));
//see sql create syntax
DataTable tb = SqliteHelper.GetDataTable("select * from sqlite_master where name = 'members'");
MessageBox.Show("" + tb.Rows[0]["sql"]);
//or:
//string syntax = "" + SqliteHelper.ExecuteScalar("select sql from sqlite_master where name = 'members'");
//MessageBox.Show(syntax); //see if column exists in table 'members'
bool hasCol = int.Parse("" + SqliteHelper.ExecuteScalar("select count(name) from sqlite_master where name = 'members' and sql like '%sendAccount%'")) > 0;
if (!hasCol)
{
//add column: ALTER TABLE table-name ADD COLUMN column-name column-type
SqliteHelper.ExecuteScalar("alter table members add COLUMN sendAccount varchar(20)");
//alter table student drop column name // 该行在SQlite中不能用,SQlite不支持drop
//SqliteHelper.ExecuteScalar("alter table members drop sendAccount33"); } //drop table if exists A
string s = "" + SqliteHelper.ExecuteScalar("drop table if exists members2");
MessageBox.Show(s);

  

参考:https://blog.csdn.net/wuyou1336/article/details/53770799

c# SQLite 判断表、字段是否存在的方法,新增、删除、重命名列的更多相关文章

  1. oracle创建表之前判断表是否存在,如果存在则删除已有表

    Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...

  2. [sqlite] 判断表、视图是否存在及常用C#操作语句

    1,判断表是否存在: SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "Dom&quo ...

  3. sqlite 判断表中是否包含 某个字段

    数据库 都有一个 根表..(我的理解) 也就是 你创建了一个数据库 里面就带有 一个表 sqlite_master 字段有 type , name  , tbl_name , rootpage ,sq ...

  4. sqlite获取表字段

    sqlite下能通过sqlite_master获取指定数据库的表信息和表结构 但是通过sqlite_master不能获取表字段的信息 如果需要获取指定表字段的所有信息 可以使用如下语法: PRAGMA ...

  5. SQLite判断某表是否存在

    SQLite判断表是否存在:其实很简单,只要查看sqlite_master表中是否存在这条数据就可以知道了.SELECT count(*) FROM sqlite_master WHERE type= ...

  6. Oracle删除表、字段之前判断表、字段是否存在

    这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ...

  7. Android数据库之判断表是否存在

    Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...

  8. sqlite查看所有表名、判断表是否存在,字段名及字段信息

    sqlite查看所有表名.判断表是否存在,字段名及字段信息   sqlite查看所有表名及字段名查询table,type 段是'table',name段是table的名字, select name f ...

  9. SQL Server 判断表中是否存在某字段

    功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].[SCHEMA].SYSCOLUMNS WHERE ID=O ...

随机推荐

  1. 日语能力考试N2级核心词汇必备—接续词

    日语能力考试N2级核心词汇必备—接续词 顺接 だから 因为......所以......(下文可用命令,意志劝诱等)その結果  其结果(口语,书面语都行,但是比较生硬)したがって  从而,因而(书面语, ...

  2. EC元素

    '''判断title是否是一致,返回布尔值'''WebDriverWait(driver,10,0.1).until(EC.title_is("title_text")) '''判 ...

  3. App原生、混合、纯WEB开发模式的优劣分析

    什么叫做原生App? 什么是混合app? 什么是Web App开发? Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统 ...

  4. Eclipse集成开发环境搭建

    gdbserver安装: 安装gdb-server的环境变量要放在arm-linux-gcc的环境的前面,因为arm-linux-gcc的安装包里面也有gdb,linux系统在找指令时从/root/. ...

  5. poj1419 Graph Coloring 最大独立集(最大团)

    最大独立集: 顶点集V中取 K个顶点,其两两间无连接. 最大团: 顶点集V中取 K个顶点,其两两间有边连接. 最大独立集=补图的最大团最大团=补图的最大独立集 #include<iostream ...

  6. GlobalLock锁定一个全局内存对象

    GlobalLock BAIPro

  7. Laravel5.5去除URL中的index.php生成优雅链接

    在使用Apache情况下: Laravel 框架通过 public/.htaccess 文件来让网址中不需要 index.php.如果你的服务器是使用 Apache ,请确认是否有开启 mod_rew ...

  8. 【LuoguP5280】[ZJOI2019] 线段树

    题目链接 题目描述 略 Sol 显然不能直接暴力模拟. 观察这个东西本质在干什么,就是某一次操作可能进行可能不进行,然后求所有情况下被标记节点总数. 这个显然可以转化为概率问题,每次有二分之一的概率进 ...

  9. electron-vue 更新 使用electron-update的版本

    electron-vue使用的electron版本比较老,用最新的electron-update会报错 我用这个版本成功 "electron-updater": "^3. ...

  10. 【leetcode】Basic Calculator III

    题目如下: Implement a basic calculator to evaluate a simple expression string. The expression string may ...