关于使用C#与sqlite数据库的创建和使用
navicat的使用
navicat是数据库的一个相关工具,支持对数据库的连接访问及相关操作。本人在使用时遇到的一个小点记录下来:
在使用navicat15的时候定义外键的时候报错,解决方法:
要完善对于外键的定义,不能只写第二,三个。
.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;
}
上一篇: Java常见的辅助函数使用