博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回家前的挣扎——SQLite增删改查
阅读量:6095 次
发布时间:2019-06-20

本文共 8535 字,大约阅读时间需要 28 分钟。

引言

最后一天,公司就两个人,也不知道弄点什么,就在网上找了Sqlite的文档,看了看,这里也是现学现卖,给自己找点事做,感觉时间过得还是比较快的,不然焦急等待,滋味不好受啊。

SQLite简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至今已经有13个年头,SQLite也迎来了一个版本 SQLite 3已经发布。(百度百科)

SQLite使用

跟使用sqlhelper一样封装sqlitehelper,通过下面的代码你会发现他们是非常的相似的。

1  public class SQLiteHelper  2     {  3         private static readonly string databaseName = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["databaseName"];  4         ///   5         /// 创建数据库  6         ///   7         /// 数据库文件路径  8         public static void CreateDataBase()  9         { 10             if (!File.Exists(databaseName)) 11             { 12                 SQLiteConnection.CreateFile(databaseName); 13             } 14         } 15         ///  16         /// 获得连接对象 17         ///  18         /// 
19 public static SQLiteConnection GetSQLiteConnection() 20 { 21 #region 方法一 22 SQLiteConnectionStringBuilder connStr = new SQLiteConnectionStringBuilder(); 23 connStr.DataSource = databaseName; 24 connStr.Password = "123456"; 25 connStr.Pooling = true; 26 return new SQLiteConnection(connStr.ToString()); 27 #endregion 28 #region 方法二 29 //return new SQLiteConnection(string.Format("Data Source={0};password=123456", databaseName)); 30 #endregion 31 } 32 /// 33 /// 匹配参数 34 /// 35 /// 36 /// 37 /// 38 /// 39 private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p) 40 { 41 if (conn.State == System.Data.ConnectionState.Closed) 42 { 43 conn.Open(); 44 } 45 cmd.Parameters.Clear(); 46 cmd.Connection = conn; 47 cmd.CommandText = cmdText; 48 cmd.CommandType = System.Data.CommandType.Text; 49 cmd.CommandTimeout = 30; 50 if (p != null) 51 { 52 foreach (object item in p) 53 { 54 cmd.Parameters.AddWithValue(string.Empty, item); 55 } 56 } 57 } 58 /// 59 /// 返回DataSet 60 /// 61 /// 62 /// 63 ///
64 public static DataSet ExecuteDataset(string cmdText, params object[] p) 65 { 66 DataSet ds = new DataSet(); 67 SQLiteCommand cmd = new SQLiteCommand(); 68 using (SQLiteConnection conn = GetSQLiteConnection()) 69 { 70 PrepareCommand(cmd, conn, cmdText, p); 71 SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd); 72 sda.Fill(ds); 73 } 74 return ds; 75 } 76 /// 77 /// 返回第一行 78 /// 79 /// 80 /// 81 ///
82 public static DataRow ExecuteDataRow(string cmdText, params object[] p) 83 { 84 DataSet ds = ExecuteDataset(cmdText, p); 85 if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) 86 { 87 return ds.Tables[0].Rows[0]; 88 } 89 else 90 { 91 return null; 92 } 93 } 94 /// 95 /// 执行非查询操作 返回受影响的行数 96 /// 97 /// 98 /// 99 ///
100 public static int ExecuteNonQuery(string cmdText, params object[] p)101 {102 SQLiteCommand cmd = new SQLiteCommand();103 using (SQLiteConnection conn = GetSQLiteConnection())104 {105 PrepareCommand(cmd, conn, cmdText, p);106 return cmd.ExecuteNonQuery();107 }108 }109 /// 110 /// 返回SQLiteDataReader111 /// 112 /// 113 /// 114 ///
115 public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)116 {117 SQLiteConnection conn = GetSQLiteConnection();118 SQLiteCommand cmd = new SQLiteCommand();119 try120 {121 PrepareCommand(cmd, conn, cmdText, p);122 SQLiteDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);123 return reader;124 }125 catch (Exception)126 {127 conn.Close();128 throw;129 }130 }131 /// 132 /// 返回结果集的首行首列133 /// 134 /// 135 /// 136 ///
137 public static object ExecuteScalar(string cmdText, params object[] p)138 {139 SQLiteCommand cmd = new SQLiteCommand();140 using (SQLiteConnection conn = GetSQLiteConnection())141 {142 PrepareCommand(cmd, conn, cmdText, p);143 return cmd.ExecuteScalar();144 }145 }146 /// 147 /// 分页获取DataSet148 /// 149 /// 150 /// 151 /// 152 /// 153 /// 154 /// 155 ///
156 public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)157 {158 if (recordCount < 0)159 recordCount = int.Parse(ExecuteScalar(countText, p).ToString());160 DataSet ds = new DataSet();161 SQLiteCommand command = new SQLiteCommand();162 using (SQLiteConnection connection = GetSQLiteConnection())163 {164 PrepareCommand(command, connection, cmdText, p);165 SQLiteDataAdapter da = new SQLiteDataAdapter(command);166 da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");167 }168 return ds;169 }170 }

SQLite创建数据表

1            try 2             { 3                 //创建表 4                 SQLiteHelper.ExecuteNonQuery("create table users(id varchar(32),userName varchar(20),userPwd varchar(20))"); 5             } 6             catch (Exception) 7             { 8  9                 throw;10             }

SQLite添加数据

1             //参数化方式 2             int r = SQLiteHelper.ExecuteNonQuery("insert into users values(?,?,?)", new string[] { Guid.NewGuid().ToString(), name, pwd }); 3             //拼接方式 4             //int result = SQLiteHelper.ExecuteNonQuery("insert into users values('" + Guid.NewGuid().ToString() + "','" + name + "','" + pwd + "')"); 5             if (r > 0) 6             { 7                 return "1"; 8             } 9             else10             {11                 return "0";12             }

Sqlite删除数据

1    protected void linkDelete_Click(object sender, EventArgs e) 2         { 3             LinkButton link = sender as LinkButton; 4             string id = link.CommandArgument; 5             int result = SQLiteHelper.ExecuteNonQuery("delete from users where id=?", new string[] { id }); 6             if (result > 0) 7             { 8                 Response.Write(""); 9                 rptUsers.DataSource = SQLiteHelper.ExecuteDataset("select * from users");10                 rptUsers.DataBind();11             }12         }

SQLite修改数据

1   SQLiteHelper.ExecuteNonQuery("update users set userName=? where id=?", new string[] { "admin", "14732d6f-3cf5-4cad-8f75-542d9d6fce17" });

SQLite查询数据

1  SQLiteHelper.ExecuteDataset("select * from users");

SQLite的数据类型

首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于SQLite来说对字段不指定类型是完全有效的. 如:

Create Table ex1(a, b, c);
诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎时能起到一个提示或帮助的作用. SQLite支持常见的数据类型, 如:
CREATE TABLE ex2
a VARCHAR(10),
b NVARCHAR(15),
c TEXT,
d INTEGER,
e FLOAT,
f BOOLEAN,
g CLOB,
h BLOB,
i TIMESTAMP,
j NUMERIC(10,5)
k VARYING CHARACTER (24),
l NATIONAL VARYING CHARACTER(16)
前面提到在某种情况下, SQLite的字段并不是无类型的. 即在字段类型为”Integer Primary Key”时.

DEMO下载猛戳这里:链接: 密码:txeo

总结

总体来说sqlite还是比较容易上手的,看了一上午的文档,然后做了一个简单的demo,感觉跟sqlserver语法很相似。

晚上就要回家了,祝大家,马年,马到成功,心想事成.....

 

转载于:https://www.cnblogs.com/wolf-sun/p/3536061.html

你可能感兴趣的文章
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>