visual studio毗连sql server数据库

打印 上一主题 下一主题

主题 1054|帖子 1054|积分 3162


bilibili演示视频
github源码

1、为什么要创建毗连

sql server是关系数据库管理系统,专门用来查询、操纵和管理数据库。visual studio和sql server毗连后,可以读取数据库中的数据,还能对数据进行增删改查。比如,我们在visual studio中用C#语言开发一个门生信息管理软件,具体功能有读取门生信息、更改门生信息、删除门生信息、添加门生信息等,这些门生的信息就存储在sql server中,软件可以根据用户的操纵读取和更改数据库中的信息。
2、在sql server中创建数据库

打开SQL Server Management Studio(SSMS)软件,毗连到服务器。
选择“数据库”,右键,“新建数据库”,创建一个门生信息数据库,数据库名为StuMes。

输入数据库名称,点击确定。如许,门生信息数据库就创建好了。

在数据库中新建一个表,用来存储门生信息,包括姓名、年龄、性别、学号。
点击“表”,右键,“新建”–>“表”。

输入列名和数据类型。


生存,输入表名称Table_Stu,点击确定。

选择StuMes数据库,右键,刷新,这时就可以看到刚刚新建的表了,目前表中只包罗列名,没有实际的内容。固然,列的添加也可以通过代码的方式,我这里是手动添加的。

向表中添加门生信息。点击“新建查询”,通过代码的方式向表中添加5个门生的信息。

代码的意思是,向Table_Stu表中插入这5个门生的信息。

  1. insert into Table_Stu(Name,Age,Sex,StuNum) values('小王','18','男','12345')
  2. insert into Table_Stu(Name,Age,Sex,StuNum) values('小白','20','男','12323')
  3. insert into Table_Stu(Name,Age,Sex,StuNum) values('小黑','19','男','11223')
  4. insert into Table_Stu(Name,Age,Sex,StuNum) values('小赵','18','女','32145')
  5. insert into Table_Stu(Name,Age,Sex,StuNum) values('小兰','21','男','13254')
复制代码
全选代码,点击实验,如许就将5条门生信息记载到了数据库中的表中了。


3、visual studio毗连sql server数据库

首先,新建一个C# Windows窗体应用 项目,我这里项目名称为DataConnect,点击确定。

项目创建好后,点击“工具”–>“毗连到数据库”,

数据源选择“Microsoft SQL Server(SqlClient)”,还必要输入服务器名,以及选择数据库名称。

在SQL Server Management Studio软件点击“文件”–>“毗连对象资源管理器”,复制“服务器名称”,粘贴过来,这时就可以通过下拉框选择刚创建的门生信息数据库了。点击确定。


如许就可以在visual studio“服务器资源管理器”中看到毗连到的数据库了。

4、门生信息管理系统页面布局

双击打开Form1.cs文件,该文件对应的是图中所示的窗体,我们向窗体中拖入控件,包括1个DataGridView用于显示数据库表格数据,和5个Button用于触发事件,打开跳转界面。我们为门生信息管理系统设置了5个功能,分别是门生信息读取、门生信息查询、门生信息修改、门生信息删除、门生信息添加,DataGridView用于显示门生信息。具体的控件添加方法见WinForms添加Button控件。

将第一个Button的Name改为“btnRead”,text改为“读取”;将第二个Button的Name改为“btnFind”,text改为“查询”;将第三个Button的Name改为“btnChange”,text改为“修改”;将第四个Button的Name改为“btnDel”,text改为“删除”;将第五个Button的Name改为“btnAdd”,text改为“添加”。将窗体的Text改为“门生信息管理系统”。就如许,第一个窗体的布局完毕。

点击项目,右键,新建Windows窗体,新建窗体作为跳转界面,当主界面点击“查询”、“修改”、“删除”、“添加”后,会跳转到相应窗体。


5、添加事件逻辑

上面我们完成了页面的绘制,但是仅仅如许并没有什么用,我们运行代码后,点击界面并不会发生任何事变,这是因为我们没有添加逻辑,也就是没有写代码,winform并不知道我们添加的这些控件是用来干什么的,下面,就依次来添加功能代码。
5.1 页面跳转

双击“查询”控件,会跳转到该控件背后的代码。当鼠标点击控件后,btnFind_Click()函数会被实验,我们要实现的效果是点击“查询”后,页面跳转,因此就必要将代码添加到该函数下。




同样的,给“修改”、“删除”、“添加”也加上相同的功能。
5.2 读取门生信息

从数据库表格中读取门生信息,DataGridView显示。
点击项目,右键,添加类。默认定名为Class1.cs。


  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. namespace DataConnect
  10. {
  11.     class Class1
  12.     {
  13.         public SqlConnection conn;
  14.         public SqlConnection Connect()  //连接数据库
  15.         {
  16.             //Data Source指定本地数据库,Initial Catalog指定数据库名称
  17.             //Integrated Security=True 表示使用集成安全性,也就是说,用户
  18.             //的Windows帐户身份将被用来验证数据库连接,而不是使用账号和密码。
  19.             string str = @"Data Source=.;Initial Catalog=StuMes;Integrated Security=True"; //数据库连接字符串
  20.             //string constr = "server=localhost;database=数据库名;uid=账号;pwd=密码;";
  21.             conn = new SqlConnection(str);  //创建SqlConnection对象
  22.             conn.Open();  //打开数据库连接
  23.             return conn;
  24.             
  25.         }
  26.         public SqlCommand Command(string sql) //执行一条sql命令
  27.         {
  28.             SqlCommand cmd = new SqlCommand(sql, Connect());
  29.             return cmd;
  30.         }
  31.         public int Execute(string sql) //获取执行sql命令后,数据库表中数据条数的更新数量,用来判断命令是否执行成功
  32.         {
  33.             return Command(sql).ExecuteNonQuery();
  34.         }
  35.         public SqlDataReader Read(string sql) //读取数据库中的数据
  36.         {
  37.             return Command(sql).ExecuteReader();
  38.         }
  39.         public void Close() //关闭数据库
  40.         {
  41.             conn.Close();
  42.         }
  43.         
  44.     }
  45. }
复制代码
双击“读取”,进入代码,在函数中输入代码,我们要实现的效果是,点击“读取”后,步伐获取数据库数据,返回毗连结果,并将获取的数据显示在DataGridView。

  1. private void btnRead_Click(object sender, EventArgs e)
  2.         {
  3.             Class1 c1 = new Class1(); //创建类对象
  4.             c1.Connect(); //连接并打开数据库
  5.             string sql = "SELECT * FROM Table_Stu"; //选择表中所有数据
  6.             SqlCommand co = c1.Command(sql);  //执行命令
  7.             SqlDataAdapter adapt = new SqlDataAdapter();
  8.             adapt.SelectCommand = co;
  9.             DataSet ds = new DataSet();
  10.             adapt.Fill(ds, "t");    //第二个参数:表名,随便取
  11.             dataGridView1.DataSource = ds.Tables["t"];
  12.             c1.Close();
  13.         }
复制代码

5.3 查询门生信息

通过学号进行门生信息的查询,假如查询的门生在数据库中,则返回门生的完整信息,否则,给出提示信息。
  1. private void btnOk_Click(object sender, EventArgs e)
  2.         {
  3.             string num = txtNum.Text;
  4.             if(num!="")
  5.             {
  6.                 Class1 c1 = new Class1();
  7.                 c1.Connect();
  8.                
  9.                 string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";
  10.                 SqlDataReader reader = c1.Read(sql);
  11.                 bool flag = reader.Read();
  12.                 if (flag==true)
  13.                 {
  14.                     MessageBox.Show("查询成功");
  15.                     SqlCommand co = c1.Command(sql);  //执行命令
  16.                     SqlDataAdapter adapt = new SqlDataAdapter();
  17.                     adapt.SelectCommand = co;
  18.                     DataSet ds = new DataSet();
  19.                     adapt.Fill(ds, "t");    //第二个参数:表名,随便取
  20.                     dataGridView1.DataSource = ds.Tables["t"];
  21.                 }
  22.                 else
  23.                 {
  24.                     MessageBox.Show("不存在输入的学号信息");
  25.                     dataGridView1.DataSource = null;
  26.                     return;
  27.                 }
  28.                 c1.Close();
  29.             }
  30.             else
  31.             {
  32.                 MessageBox.Show("请输入学号");
  33.             }
  34.         }
  35. private void btnExit_Click(object sender, EventArgs e)
  36.         {
  37.             this.Close();
  38.         }
复制代码


5.4 修改门生信息

先判断输入的学号是否存在于数据库中,假如不存在,就返回提示信息;否则,就进行修改。
  1.         private void btnExit_Click(object sender, EventArgs e)
  2.         {
  3.             this.Close();
  4.         }
  5.         private void btnOk_Click(object sender, EventArgs e)
  6.         {
  7.             string name = txtName.Text;
  8.             string age = txtAge.Text;
  9.             string sex = comSex.Text;
  10.             string num = txtNum.Text;
  11.             if (num != "")
  12.             {
  13.                 Class1 c1 = new Class1();
  14.                 c1.Connect();
  15.                 string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";
  16.                 SqlDataReader reader = c1.Read(sql);
  17.                 bool flag = reader.Read();
  18.                 if (flag == true)
  19.                 {
  20.                     //MessageBox.Show("查询成功");
  21.                     if (name == "" || age == "" || sex == "")
  22.                     {
  23.                         MessageBox.Show("请将信息填写完整");
  24.                     }
  25.                     else
  26.                     {
  27.                         sql = $"delete from Table_Stu where StuNum={int.Parse(num)}";
  28.                         c1.Execute(sql); //执行命令
  29.                         sql = $"insert into Table_Stu values('{name}','{age}','{sex}','{num}')";
  30.                         c1.Execute(sql);
  31.                         MessageBox.Show("修改信息成功");
  32.                     }
  33.                 }
  34.                 else
  35.                 {
  36.                     MessageBox.Show("不存在输入的学号信息");
  37.                     return;
  38.                 }
  39.                 c1.Close();
  40.             }
  41.             else
  42.             {
  43.                 MessageBox.Show("请输入学号");
  44.             }
  45.             
  46.             }
  47.         }
  48.     }
复制代码
5.5 删除门生信息

输入学号,判断是否存在于数据库中,没有则返回提示信息,有则删除该条信息。
  1. private void btnExit_Click(object sender, EventArgs e)
  2.         {
  3.             this.Close();
  4.         }
  5.         private void btnOk_Click(object sender, EventArgs e)
  6.         {
  7.             string num = txtNum.Text;
  8.             if(num!="")
  9.             {
  10.                 Class1 c1 = new Class1();
  11.                 c1.Connect();
  12.                 string sql = $"select * from Table_Stu where StuNum={int.Parse(num)}";
  13.                 SqlDataReader reader = c1.Read(sql);
  14.                 bool flag = reader.Read();
  15.                 if (flag == true)
  16.                 {
  17.                     sql = $"delete from Table_Stu where StuNum={int.Parse(num)}";
  18.                     c1.Execute(sql); //执行命令
  19.                     MessageBox.Show("删除信息成功");
  20.                 }
  21.                 else
  22.                 {
  23.                     MessageBox.Show("不存在输入的学号信息");
  24.                     return;
  25.                 }
  26.                 c1.Close();
  27.             }
  28.             else
  29.             {
  30.                 MessageBox.Show("请输入学号");
  31.             }
  32.         }
复制代码
5.6 添加门生信息

先判断输入的门生学号在数据库中是否存在,假如存在,则返回提示信息,否则就添加信息到数据库,同时,输入的信息必要完整。
  1. private void btnExit_Click(object sender, EventArgs e)
  2.         {
  3.             this.Close();
  4.         }
  5.         private void btnOk_Click(object sender, EventArgs e)
  6.         {
  7.             string name = txtName.Text;
  8.             string age = txtAge.Text;
  9.             string sex = comSex.Text;
  10.             string num = txtNum.Text;
  11.             Class1 c1 = new Class1();
  12.             c1.Connect();
  13.             string sql = "select * from Table_Stu";
  14.             SqlDataReader reader = c1.Read(sql);
  15.             reader.Read();
  16.             string tmp = reader[3].ToString();
  17.             if (name == "" || age == "" || sex == "" || num == "")
  18.             {
  19.                 MessageBox.Show("请输入完整信息");
  20.             }
  21.             else
  22.             {
  23.                 if(tmp==num)
  24.                 {
  25.                     MessageBox.Show("您输入的学号已存在,请重新输入");
  26.                     return;
  27.                 }
  28.                 else
  29.                 {
  30.                     sql = $"insert into Table_Stu values('{name}','{age}','{sex}','{num}')";
  31.                     c1.Execute(sql);
  32.                     MessageBox.Show("添加信息成功");
  33.                 }
  34.             }
  35.             c1.Close();
  36.         }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

西河刘卡车医

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表