ado.net实现简单的增加和查询小程序

ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库。

现在来通过小案例来了解一下如何通过窗体对数据库进行访问.可以对数据库进行增和查,改和删的操作和增都是差不多的.效果如下:

在这里,为了方便操作以及简单易懂,我在数据库中就只创了一个表,并没有把类别或者国家单独做一张表.

表的信息如下:

  • dvdId是编号
  • dvdType是类别
  • dvdName弟名称
  • country是国家
  • state是状态

首先,需要拖拽控件制作如下窗体:

每一个控件命好名字,即Name属性,这是为了方便获取控件,由于没有类别表,在这里的combobox的值就没有从数据库获取,就是直接写进去值:

列表就是一个datagridview控件,其他的就是一些简单常见的控件,比如lable,textbox,button,radiobutton以及groupbox.

控件介绍完了之后,把控件属性都改一下,比如控件的Name以及button的Text等细节问题,数据库和布局搞定之后,就可以开始写代码了.

首先需要一个DBHelper类,用于连接数据库以及增删改查的方法.由于我只用到查询和增删改查,我就只写了两个方法.

DBHelper:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 using System.Data;
 7 using System.Data.SqlClient;
 8 
 9 namespace test
10 {
11     class DBHelper
12     {
13         //创建数据库连接对象
14         private static string ConnString = "server=.;database=DVD;uid=sa;pwd=123456;";
15         //创建数据库连接字符串
16         private static SqlConnection Conn = null;
17         //初始化数据库连接
18         private static void InitConnection()
19         {
20             if (Conn == null)
21             {
22                 Conn = new SqlConnection(ConnString);
23             }
24             if (Conn.State == ConnectionState.Closed)
25             {
26                 Conn.Open();
27             }
28             if (Conn.State == ConnectionState.Broken)
29             {
30                 Conn.Close();
31                 Conn.Open();
32             }
33         }
34         //查询获取DataTable
35         public static DataTable GetDataTable(string sqlStr)
36         {
37             InitConnection();
38             DataTable table = new DataTable();
39             SqlDataAdapter dap = new SqlDataAdapter(sqlStr, Conn);
40             dap.Fill(table);
41             Conn.Close();
42             return table;
43         }
44         //增删改
45         public static bool ExecuteNonQuery(string sqlStr)
46         {
47             InitConnection();
48             SqlCommand cmd = new SqlCommand(sqlStr, Conn);
49             int result = cmd.ExecuteNonQuery();
50             Conn.Close();
51             return result > 0;
52         }
53     }
54 }

连接好数据库之后,就可以写窗体的加载事件,查询按钮的点击事件以及入库按钮的点击事件了:

事件代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10 
11 
12 namespace test
13 {
14     public partial class ListForm : Form
15     {
16         public ListForm()
17         {
18             InitializeComponent();
19         }
20 
21         /// <summary>
22         /// 窗体加载事件
23         /// </summary>
24         /// <param name="sender"></param>
25         /// <param name="e"></param>
26         private void ListForm_Load(object sender, EventArgs e)
27         {
28             //窗体加载时,显示表中信息
29 
30             //查询的sql语句
31             string sqlStr = "select dvdType 类别,dvdName 片名,country 国家,case when state = 0 then '未借出' when state = 1 then '已借出' end 状态 from dvdInfo";
32             DataTable dt = DBHelper.GetDataTable(sqlStr);
33             //dgv_list是你的datagridview命名
34             this.dgv_list.DataSource = dt;
35         }
36 
37         /// <summary>
38         /// 入库按钮点击事件
39         /// </summary>
40         /// <param name="sender"></param>
41         /// <param name="e"></param>
42         private void btn_rk_Click(object sender, EventArgs e)
43         {
44             //定义state
45             int state = 0;
46             if (rb_yjc.Checked == true)
47             {
48                 state = 1;
49             }
50             else
51             {
52                 state = 0;
53             }
54             //插入语句
55             string sqlStr = string.Format("insert into dvdInfo values('{0}','{1}','{2}',{3})", cb_lb.Text, tb_pm.Text, tb_gj.Text, state);
56             //验证是否添加成功
57             if (DBHelper.ExecuteNonQuery(sqlStr))
58             {
59                 MessageBox.Show("添加成功!");
60                 //重新加载窗体
61                 ListForm_Load(null, null);
62             }
63             else
64             {
65                 MessageBox.Show("添加失败!");
66             }
67 
68         }
69 
70         /// <summary>
71         /// 查询按钮点击事件
72         /// </summary>
73         /// <param name="sender"></param>
74         /// <param name="e"></param>
75         private void btn_cx_Click(object sender, EventArgs e)
76         {
77             //查询表中内容,支持模糊查询
78             string sqlStr = string.Format("select dvdType 类别,dvdName 片名,country 国家,case when state = 0 then '未借出' when state = 1 then '已借出' end 状态 from dvdInfo where dvdName like '%{0}%'", tb_cx.Text);
79             DataTable dt = DBHelper.GetDataTable(sqlStr);
80             this.dgv_list.DataSource = dt;
81         }
82     }
83 }

写完事件之后就可以运行试试看了.

原文地址:https://www.cnblogs.com/fei-H/p/10952689.html