欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于使用C#与sqlite数据库的创建和使用

程序员文章站 2024-03-20 09:37:52
...

navicat的使用
navicat是数据库的一个相关工具,支持对数据库的连接访问及相关操作。本人在使用时遇到的一个小点记录下来:
在使用navicat15的时候定义外键的时候报错,解决方法:
关于使用C#与sqlite数据库的创建和使用
要完善对于外键的定义,不能只写第二,三个。

.net操作数据库(基于sqlite)

var connection = new SQLiteConnection("data source=" + str  );
connection.Open();
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = connection;
cmd.CommandText = "CREATE TABLE " + "class" + "(class_id integer,class_name text,school_id integer, primary key(class_id),foreign key (school_id) references  school(school_id))";
cmd.ExecuteNonQuery();
connection.Close();

一般来说先创建SQLiteConnection,其中定义数据源之类的信息;
而后创建SQLiteCommand,它表示我对于数据库的操作;
而其中的ExecuteNonQuery方法主要用来更新数据,当然也可以用来执行目标操作(例如查询数据库的结构或者创建诸如表等的数据库对象)。通常用它来执行insert、update、delete语句,在不使用Dataset的情况下更改数据库中的数据。select语句不适合ExecuteNonQuery()方法。
一、首先,来看看ExecuteNonQuery的返回值:
1. 对于Update、insert、Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数是0,则返回值就是0;
2. 对于所有其他类型的语句,返回值为-1

返回查找的结果的两种方法:
1.返回一行元素

string st = cmd.ExecuteScalar().ToString();
MessageBox.Show("school_id=" + textBox1.Text + "school_name=" + st);

其中的ExecuteScalar函数执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。
2.返回多行元素

SQLiteDataReader rdr = cmd.ExecuteReader();
string str = string.Empty;
while (rdr.Read())
{
   str = str+ "school_id:" + rdr[0] + " ";
}

得到的结果str包含了所有返回值

下面是增删查改代码:
增加:
cmd.CommandText = string.Format(“INSERT INTO “main”.“class”(“class_id”, “class_name”,“school_id”) VALUES (’{0}’,’{1}’,’{2}’);”, textBox3.Text, textBox1.Text, textBox2.Text);
删除:
cmd.CommandText = string.Format(“DELETE FROM “main”.“class” WHERE class_id = {0};”, textBox1.Text);
查找:
cmd.CommandText = string.Format(“SELECT class_name, school_id FROM class WHERE class_id = {0};”, textBox1.Text);
改变:
cmd.CommandText = string.Format(“update class set class_name=”{0}",school_id={1} where class_id={2};", textBox2.Text, textBox3.Text, textBox1.Text);
其实这些代码可以在navicat中找到。

将数据库中表绑定到datagrid中并显示

DataSet ds = new DataSet();
DataTable dt = new DataTable();
SQLiteConnection connection = new SQLiteConnection("data source=" + mian.filePath);
connection.Open();
string sql = "select * from log ;";
SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, connection);
sda.Fill(ds, "id");//注意这里的string要是表内标题
dt = ds.Tables["id"];
connection.Close();
dataGridView1.DataSource = dt.DefaultView;

获得一个表中项数

public static string GetRowId(string str)//输入的是表名,要求输出是表中数据项数
{
	var connection = new SQLiteConnection("data source=" + mian.filePath);
	connection.Open();
	SQLiteCommand cmd = new SQLiteCommand();
	cmd.Connection = connection;
	cmd.CommandText = string.Format("SELECT count(*) FROM {0};",str);
	cmd.ExecuteNonQuery();
	string st = cmd.ExecuteScalar().ToString();
	connection.Close();
	return st;
}