C# SQLite数据库操作:创建数据库,创建表,删除表,插入数据,读出数据,加密数据库,增加列

接上一篇博客C# Winform中使用SQLite基础入门:创建数据库,连接数据库,创建一张表(1)

一、删除数据库

但是由于它是个文件型的,我们直接用 System.IO.File.Delete(string path) 方法来删除文件。

        private void button2_Click(object sender, EventArgs e)
        {           
            if (System.IO.File.Exists(StartupPath))
            {
                System.IO.File.Delete(StartupPath);
            }
        }

二、删除表

SQL 语句:DROP TABLE IF EXISTS表名

        private void button3_Click(object sender, EventArgs e)
        {
            // 连接数据库    
            string connectionString = "data source = " + StartupPath;
            SQLiteConnection dbConnection = new SQLiteConnection(connectionString);
            if(dbConnection.State!=System.Data.ConnectionState.Open)
            {
                dbConnection.Open();
                SQLiteCommand cmd = new SQLiteCommand();
                cmd.Connection = dbConnection;
                cmd.CommandText = "DROP TABLE IF EXISTS table2";
                cmd.ExecuteNonQuery();//执行
            }
            dbConnection.Close();
        }

三、更改表名

SQL语句:ALTER TABLE table2 RENAME TO table3

cmd.CommandText = "ALTER TABLE table2 RENAME TO table3";
cmd.ExecuteNonQuery();

四、增加列

SQL语句 :ALTER TABLE t1 ADD COLUMN age int

// t1 表添加一个名为 age,数据类型为 int 的新列
cmd.CommandText = "ALTER TABLE t1 ADD COLUMN age int";
cmd.ExecuteNonQuery();

五、插入数据

SQL语句:INSERT INTO

//示例1(简单插入):

cmd.CommandText = "INSERT INTO t1 VALUES('99999',11)";
cmd.ExecuteNonQuery();

//示例2(变量插入,要引用 System.Data):

using System.Data;

string s = "123456";
int n = 10;
cmd.CommandText = "INSERT INTO t1(id,age) VALUES(@id,@age)";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();

六、替换数据

SQL 命令 :INSERT INTO。
下面示例中, t1 表中 id 为主键,相同主键值的就 UPDATE,否则就 INSERT

string s = "123456";
int n = 30;
cmd.CommandText = "REPLACE INTO t1(id,age) VALUES(@id,@age)";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();

七、更新数据

SQL 命令 UPDATE tablename SET column1=value,column2=value… WHERE 条件

string s = "333444";
int n = 30;
cmd.CommandText = "UPDATE t1 SET id=@id,age=@age WHERE id='0123456789'";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();

八、删除数据

SQL 命令:DELETE FROM tablename WHERE 条件

cmd.CommandText = "DELETE FROM t1 WHERE id='99999'";
cmd.ExecuteNonQuery();

九、查询数据

SQL 命令:SELETE 语句,具体的请参考 SQL 教程

//查询第1条记录,这个并不保险,rowid 并不是连续的,只是和当时插入有关
SQLiteDataReader sr = cmd.ExecuteReader();
//运行以下的就能知道 rowid 并不能代表 行数
cmd.CommandText = "SELECT rowid FROM t1 ";
sr = cmd.ExecuteReader();
while (sr.Read())
{
    Console.WriteLine("{sr.GetString(0)} {sr.GetInt32(1).ToString()}");
}
sr.Close();

十、整理数据库

SQLite 的自带命令 VACUUM。用来重新整理整个数据库达到紧凑之用,比如把删除的彻底删掉等等。

cmd.CommandText = "VACUUM";
cmd.ExecuteNonQuery();

汇总上述知识,建一个小案例:创建数据库,创建一个表,插入数据,读出表中的内容。
SQLite可以对整个数据库文件进行加密. 支持二进制和明文的密码。未加密的 SQLite 数据库文件可以自由的跨平台和处理器使用,包括非Windows平台,加密之后的数据库可以在全部Windows平台上使用。

        private void button4_Click(object sender, EventArgs e)
        {
            //方法一:创建一个空sqlite数据库,用IO的方式
            // FileStream fs = File.Create(“c://test.db“);
            //方法二:用SQLiteConnection创建空的sqlite数据库。
            //SQLiteConnection.CreateFile(@"E:\test.db");
            // 创建一个密码为123456的空的sqlite数据库            
            string datasource = "E:\\test2.db";
            SQLiteConnection.CreateFile(datasource);
            //连接数据库
            SQLiteConnection conn = new SQLiteConnection();
            SQLiteConnectionStringBuilder connstr = new SQLiteConnectionStringBuilder();
            connstr.DataSource = datasource;
            connstr.Password = "123456";//设置密码,SQLite ADO.NET实现了数据库密码保护
            conn.ConnectionString = connstr.ToString();
            conn.Open();
            //创建表
            SQLiteCommand cmd = new SQLiteCommand();
            string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
            cmd.CommandText = sql;
            cmd.Connection = conn;
            cmd.ExecuteNonQuery();
            //插入数据
            sql = "INSERT INTO test VALUES('ekinglong','mypassword')";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
            //取出数据
            sql = "SELECT * FROM test";
            cmd.CommandText = sql;
            SQLiteDataReader reader = cmd.ExecuteReader();
            StringBuilder sb = new StringBuilder();
            while (reader.Read())
            {
                sb.Append("username:").Append(reader.GetString(0)).Append("\n").Append("password:").Append(reader.GetString(1));
            }
            MessageBox.Show(sb.ToString());
        }

转载至【https://www.cnblogs.com/leemano/p/6578050.html】和【https://blog.csdn.net/xdonx/article/details/11356815?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2】

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值