**
安装数据库包
**
在使用 SQLite 数据库时,你需要安装适当的 NuGet 包来提供与 SQLite 的集成。
1.打开 Visual Studio 中的你的项目
2.在顶部菜单栏中选择 "项目" -> "管理 NuGet 包"
3.在 NuGet 管理器中搜索 "System.Data.SQLite"
4.找到适合你项目的 SQLite 包,并点击安装
数据库类方法
csharp
//头文件
using Microsoft.Data.Sqlite;
using System.Data.SQLite;
public static class MySqLite//数据库类
{
static string DbPath = @"D:\C#_program\北理测试1\北理测试1\北理测试1\北理测试\PowerField\bin\data";
public static void ExecuteNonQuery(string sql, string dbName = "PowerField.db")
{
using (var connection = CreateDatabaseConnection(dbName))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
try
{
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
command.ExecuteNonQuery();
}
transaction.Commit();
}
catch (Exception ex)
{
Console.WriteLine("Error executing SQL: " + ex.Message);
transaction.Rollback();
}
}
}
}
public static void ExecuteQuery(string sql, string dbName = "PowerField.db")
{
Console.WriteLine("1111111111");
using (var connection = CreateDatabaseConnection(dbName))
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
try
{
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
using (var reader = command.ExecuteReader())
{
//数据操作
}
}
transaction.Commit();
}
catch (Exception ex)
{
Console.WriteLine("Error executing SQL: " + ex.Message);
transaction.Rollback();
}
}
}
}
public static SQLiteConnection CreateDatabaseConnection(string dbName)
{
if (!string.IsNullOrEmpty(DbPath) && !Directory.Exists(DbPath))
Directory.CreateDirectory(DbPath);
var dbFilePath = System.IO.Path.Combine(DbPath, dbName);
return new SQLiteConnection("DataSource = " + dbFilePath);
}
//改
public static void UpdateData(string name, string can1, string can2, string can3, string can4, string can5, string dbName = "PowerField.db")//改
{
string sql = "UPDATE weili_canshu SET can1 = @can1,can2 = @can2,can3 = @can3,can4 = @can4,can5 = @can5 WHERE name = @name";
// 创建数据库连接
using (var connection = CreateDatabaseConnection(dbName))
{
connection.Open(); // 打开数据库连接
// 开始事务
using (var transaction = connection.BeginTransaction())
{
try
{
// 创建命令对象
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
// 添加参数
command.Parameters.AddWithValue("@name", name);
command.Parameters.AddWithValue("@can1", can1);
command.Parameters.AddWithValue("@can2", can2);
command.Parameters.AddWithValue("@can3", can3);
command.Parameters.AddWithValue("@can4", can4);
command.Parameters.AddWithValue("@can5", can5);
Console.WriteLine("SQL 语句: " + command.CommandText);
// 执行命令
int rowsAffected = command.ExecuteNonQuery();
// 提交事务
transaction.Commit();
Console.WriteLine($"成功更新 {rowsAffected} 行数据。");
}
}
catch (Exception ex)
{
Console.WriteLine("执行 SQL 出错: " + ex.Message);
// transaction.Rollback(); // 发生异常时回滚事务
}
}
}
}
//增
public static void InsertData(string name, string c1,string c2, string c3, string c4, string c5,string id, string dbName = "PowerField.db")
{
string sql = "INSERT INTO weili_canshu (name,can1,can2,can3,can4,can5,id) VALUES (@name, @can1, @can2, @can3, @can4, @can5, @id)";
// 创建数据库连接
using (var connection = CreateDatabaseConnection(dbName))
{
connection.Open(); // 打开数据库连接
// 开始事务
using (var transaction = connection.BeginTransaction())
{
try
{
// 创建命令对象
using (var command = connection.CreateCommand())
{
command.CommandText = sql;
// 添加参数
command.Parameters.AddWithValue("@name", name);
command.Parameters.AddWithValue("@can1", c1);
command.Parameters.AddWithValue("@can2", c2);
command.Parameters.AddWithValue("@can3", c3);
command.Parameters.AddWithValue("@can4", c4);
command.Parameters.AddWithValue("@can5", c5);
command.Parameters.AddWithValue("@id", id);
// 执行命令
int rowsAffected = command.ExecuteNonQuery();
// 提交事务
transaction.Commit();
Console.WriteLine($"成功插入 {rowsAffected} 行数据。");
}
}
catch (Exception ex)
{
Console.WriteLine("执行 SQL 出错: " + ex.Message);
transaction.Rollback(); // 发生异常时回滚事务
}
}
}
}
//删
public static void DeleteData(string x)
{
// string x = DamangeAssessmentWarhead.Text;
// 创建数据库连接
var connection = MySqLite.CreateDatabaseConnection("PowerField.db");
connection.Open();
// 开始事务
SQLiteTransaction transaction = connection.BeginTransaction();
try
{
// 创建命令对象
SQLiteCommand command = connection.CreateCommand();
command.CommandText = "DELETE FROM weili_canshu WHERE name ='" + x + "'";//当name=x时删除该条数据
// 执行命令并获取受影响的行数
int rowsAffected = command.ExecuteNonQuery();
// 提交事务
transaction.Commit();
}
catch (Exception ex)
{
// 如果出现异常,回滚事务
transaction.Rollback();
Console.WriteLine("错误: " + ex.Message);
}
finally
{
// 关闭连接
connection.Close();
MessageBox.Show("删除成功!");
}
// DamangeAssessmentWarhead.Items.Remove(x);
}
}
//调用ExecuteQuery(查)与ExecuteNonQuery(增删改)
//例如 MySqLite.ExecuteQuery("SELECT * FROM weili_canshu");//直接写mysql查询语句
//也可以自定义函数,调用方便 DeleteData();InsertData();等方法
一般查询数据库都要进行其他操作,所以查询一般写在类方法外面
csharp
//数据库------查
var connection = MySqLite.CreateDatabaseConnection("PowerField.db");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = "SELECT * FROM weili_canshu";
var reader = command.ExecuteReader();
while (reader.Read())//read既是所读的一条数据,reader.GetString(0)代表数据的第一个值
{
int id= reader.GetInt32(0);
string name = reader.GetString(1);
int age= reader.GetInt32(2);
//id name age 数据读到了
Console.WriteLine(name);//数据已得到,可以根据自己情况进行数据处理
Console.WriteLine(age.toString());
}
connection.Close();