c# SQLite 判断表、字段是否存在的方法,新增、删除、重命名列
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 判断表、字段是否存在的方法,新增、删除、重命名列的更多相关文章
- oracle创建表之前判断表是否存在,如果存在则删除已有表
Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...
- [sqlite] 判断表、视图是否存在及常用C#操作语句
1,判断表是否存在: SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "Dom&quo ...
- sqlite 判断表中是否包含 某个字段
数据库 都有一个 根表..(我的理解) 也就是 你创建了一个数据库 里面就带有 一个表 sqlite_master 字段有 type , name , tbl_name , rootpage ,sq ...
- sqlite获取表字段
sqlite下能通过sqlite_master获取指定数据库的表信息和表结构 但是通过sqlite_master不能获取表字段的信息 如果需要获取指定表字段的所有信息 可以使用如下语法: PRAGMA ...
- SQLite判断某表是否存在
SQLite判断表是否存在:其实很简单,只要查看sqlite_master表中是否存在这条数据就可以知道了.SELECT count(*) FROM sqlite_master WHERE type= ...
- Oracle删除表、字段之前判断表、字段是否存在
这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ...
- Android数据库之判断表是否存在
Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...
- sqlite查看所有表名、判断表是否存在,字段名及字段信息
sqlite查看所有表名.判断表是否存在,字段名及字段信息 sqlite查看所有表名及字段名查询table,type 段是'table',name段是table的名字, select name f ...
- SQL Server 判断表中是否存在某字段
功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].[SCHEMA].SYSCOLUMNS WHERE ID=O ...
随机推荐
- Assets.xcassets的详细使用方法
开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWorl ...
- DCGAN生成式对抗网络--keras实现
本文针对cifar10 图集进行了DCGAN的复现. 其中库中的SpectralNormalizationKeras需添加至python环境中 该篇代码如下: from keras import ba ...
- 006-saltstack之远程执行
1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...
- 前端matrix矩阵的变化
css3 transform中的matrix矩阵 CSS3中的矩阵CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform), ...
- 【学习】027 Dubbo
Dubbo概述 Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 ...
- docker概述和安装
一:概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用 ...
- Excel去重操作
工作中经常遇到要对 Excel 中的某一列进行去重操作,得到不重复的结果,总结如下: 选中要操作的列(鼠标点击指定列的字母,如T列) 点击"数据"中"排序和筛选" ...
- 任意修改网页内容JS代码
浏览器输入框执行,chrome需要粘贴后,需要在前面手打javascript: 因为粘贴的会自动过滤 javascript:document.body.contentEditable='true'; ...
- MyEclipse更改项目名web发布名字不改问题
步骤: 右键项目-->选择propertis-->MyEclipse-->Project Facets-->Web-->右侧更改Web Context-root 如下图:
- 【shell】文本匹配问题
原文本通过TITLE分段 TITLE1 xxx yyy TITLE2 xxx yyy hello zzz hello TITLE3 xxx hello 类似于这样的,hello可能有多个,需要打印出含 ...