首先创建连接数据库的文件夹
后缀为udl
- ADO.NET类集合主要由五大核心组件类组成:
Connection(数据库连接)
Command(数据库的命令)
DataReader(数据库的读取器)
DataSet(数据集)
DataAdaper(数据库的适配器)
对象 | 说明 |
---|---|
Connection | 用于提供与数据库的连接功能 |
Command | 返回数据、运行存储过程及发送或检索参数信息的数据库命令 |
DataReader | 通过Command从数据库检索信息的功能。一中数据库读取方式 |
DataSet | 是一个数据库容器,可以看作是内存中的数据库 |
DataAdapter | 与连接DataSet对象和数据源连接的桥梁,DataAdapter对象使用Command对象在数据源中执行SQL命令,可以将数据加载到DataSet中,以确保DataSet中数据的更新与数据源保持一致。 |
- 先链接数据库,再把数据库里面的数据显示在dataGridView1
先导入两个using
using System.Data.SqlClient;
先定义数据库地址
public string conser = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=aa;Data Source=DESKTOP-0HQ3J93";
1.绑定数据库,显示数据//写在主界面上
string sql = "select * from aa"; //定义一个存储的表
SqlConnection con = new SqlConnection(conser);//链接数据库
con.Open();//打开数据库
SqlDataAdapter dt = new SqlDataAdapter(sql,con);//用适配器存储数据=
DataSet ds = new DataSet(); //数据库内存
dt.Fill(ds);//把dt所有内容填充到ds里面
dataGridView1.DataSource = ds.Tables[0];//dataGridView1添加ds里面的数据
con.Close();//关闭数据库
2.添加数据
string sql = "insert into aa (姓名,性别,年龄)values('"+ textBox1.Text+"','" +textBox2.Text + "','" +textBox3.Text +"')";
SqlConnection con = new SqlConnection(conser);//链接数据库
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);//只显示这一行,修改命令,一定需要对数据库进行修改
int i=cmd.ExecuteNonQuery();//检查有没有修改成功,必须要写,不写添加不成功
if(i>0){
MessageBox.Show("添加成功");
Form1_Load(null,null);//界面刷新;
}
3.数据库修改
string sql = "update aa set 姓名='" + textBox1.Text + "',性别='" + textBox2.Text + "',年龄='" + textBox3.Text + "'where 姓名='" + textBox1.Text + "'";
SqlConnection con = new SqlConnection(conser);
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
cmd.ExecuteNonQuery();
Form1_Load(null,null);
4.数据库删除
string sql = "delete from aa where 姓名='"+textBox1.Text+"'";
SqlConnection con = new SqlConnection(conser);//链接数据库
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);//只显示这一行
int i = cmd.ExecuteNonQuery();//检查有没有修改成功,必须要写,不写添加不成功
if (i > 0)
{
MessageBox.Show("修改成功");
Form1_Load(null, null);//界面刷新;
}
5.数据库查询
string sql = "select * from aa where 姓名='" + textBox1.Text + "'";
SqlConnection con = new SqlConnection(conser);//链接数据库
con.Open();
SqlDataAdapter dt = new SqlDataAdapter(sql,con);//不用对数据库进行修改
DataSet ds = new DataSet(); //数据库内存
dt.Fill(ds);//把dt所有内容填充到ds里面
dataGridView1.DataSource = ds.Tables[0];//
查询两个数据即以上的用or链接,删除等也可以
string sql = "select * from aa where 姓名='" + textBox1.Text.Trim() + "'or 性别='" + textBox2.Text.Trim() + "'";
查询下拉列表comboBox的获取选择
switch(comboBox1.Text){
case "姓名" :
/*代码执行块*/
break;
6.点击点击dataGridView1里面的数据会出现的编辑框里面
textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
textBox2.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
textBox3.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
- SqlCommand与SqlDataAdapter的用法区别
SqlCommand用于需要修改数据库里面的数据的
SqlDataAdapter用于不需要修改数据库里面的数据的
7.同时将输入导入到两个表格里面
SqlConnection con = null;
SqlTransaction stre = null;//创建事物对象
try
{
con = new SqlConnection(conser);
con.Open();
string sql1 = "insert into stu1(name,pw)values('"+textBox1.Text+"','"+textBox2.Text+"')";
string sql2 = "insert into stu2(name,pw)values('" + textBox1.Text + "','" + textBox2.Text + "')";
stre = con.BeginTransaction();//启动事物
SqlCommand cmd = new SqlCommand();
cmd.Transaction = stre;//将sql命令执行到事物
cmd.Connection = con;
cmd.CommandText = sql1;
cmd.ExecuteNonQuery();
cmd.CommandText = sql2;
cmd.ExecuteNonQuery();
stre.Commit();//将多个sql命令当成一个事物整体提交
}
catch
{
if(stre !=null){
stre.Rollback();//事物不是一致的,将回滚
}
}
finally
{
if(con!=null){
con.Close();
}
}
8.登录判断功能
string sql = "select * from zhuce where zh='"+textBox1.Text+"' and pw1='"+textBox2.Text+"'";//查询账号密码
SqlConnection con = new SqlConnection(conser);
SqlCommand cmd = new SqlCommand(sql,con);
con.Open();
SqlDataReader dt = cmd.ExecuteReader();//快速读取数据,只能读,不能写
dt.Read();//读取数据 dt[i]即是他表格存储的第几个数据
string ty=dt["types"].ToString().Trim();//因为sql查询了表格所有内容,所以用dt去查找表格中types的内容,转换为string类型,用来得到里面的数据。
if (dt.HasRows)//表示的是从数据库读出来的数据集dataReader中是否存在数据
{
}
- 封装(二层架构)
在UI界面定义一个类直接调用
class Class1
{
public static string constr= "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=aa;Data Source=DESKTOP-0HQ3J93";
SqlCommand cmd = null;
SqlConnection con = null;
public SqlConnection GetCon()//链接数据库
{
con = new SqlConnection(constr);
return con;
}
public int GetByNonQuery(string sql)//增删改
{
con = GetCon();
con.Open();
cmd = new SqlCommand(sql, con);
int i = cmd.ExecuteNonQuery();
con.Close();
return i;
}
public DataTable GetByTable(string sql)//显示到dataGridView
{
con = GetCon();
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[0];
}
public SqlDataReader GetByRead(string sql)//判断是否有无此数据,即登录功能
{
con = GetCon();
con.Open();
cmd = new SqlCommand(sql, con);
SqlDataReader i = cmd.ExecuteReader();
return i;
con.Close();
}
public int GetByScalar(string sql)
{
con = GetCon();
con.Open();
cmd = new SqlCommand(sql, con);
int i = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return i;
}
}
调用
//调用显示
dataGridView1.DataSource = c.GetByTable("select * from aa");
//调用增加
c.GetByNonQuery("insert into aa(姓名,性别,年龄)values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')");
Form1_Load(null,null);
用一个类共享不同界面的数据
修改菜单栏是否可被点击