接上一篇博客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】