zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    Lock
    Semaphore
    Exchanger
    CyclicBarrier
    [O]SQL SERVER下有序GUID和无序GUID作为主键&聚集索引的性能表现
    十个面向对象设计原则
    DB-Engines Ranking
    【转】计算机网络总结
    【转】常见的Web实时消息交互方式和SignalR
    【转】软件质量之道:SourceMonitor
  • 原文地址:https://www.cnblogs.com/fei-H/p/10952689.html
Copyright © 2011-2022 走看看