C#简单功能(六)

6设计一基于window窗体的登录界面,窗体居中显示。要求用户输入用户名和密码,若登录失败则显示用户名或密码错误,若登录成功则显示第二个窗体。第二个窗体中能显示数据库内的数据,数据不能添加,能实现数据的编辑和保存。

  1. 第一步:登录界面设计:
  2. 第二步:数据界面设计:
    一个文本框,四个按钮,一个数据单元格
    在这里插入图片描述

3.第三步:数据界面代码设计:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;//数据库连接命名空间

namespace C_shape考核第六题
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent(); 
        } 
        //创建对象
        public static string str = @"Data Source =LAPTOP-KKS0SHEJ; 
        Database=login;Integrated Security=True;";//连接字符
        public static string sql = "select * from login";//查询语句
        public static SqlConnection conn = new SqlConnection(str);//连接对象
        public static SqlCommand cmd = new SqlCommand(sql, conn);//执行语句对象
        public static SqlDataAdapter sda=new SqlDataAdapter(cmd);//数据适配器
        public static DataSet ds = new DataSet();//数据集
        public static SqlCommandBuilder scb = new SqlCommandBuilder(sda);//有这个才能使用updata更新
        private void Form2_Load(object sender, EventArgs e)//
        { 
            conn.Open();
            ds.Tables.Clear();//初始化数据集
            sda.Fill(ds,"login");//利用fill方法将login这个表填充到数据集里面
            dataGridView1.DataSource = ds.Tables["login"]; 
            //设置单元格属性
            //单击单元格或行标题可以选中整行
            this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            conn.Close();
        }
        private void button2_Click(object sender, EventArgs e)//保存按钮
        {
            conn.Open();
            sda.AcceptChangesDuringUpdate = true;//写也可以,不行也可以 
            //利用try catch方法进行尝试
            try
            {
                sda.Update(ds, "login");//利用updata更新数据集,会自动更新到数据库里面
                MessageBox.Show("保存成功!");
            }
            catch
            {
                MessageBox.Show("保存失败!");
            }
            conn.Close();
        }

        private void button1_Click(object sender, EventArgs e)//刷新按钮
        {
            conn.Open();
            ds.Tables.Clear();
            sda.Fill(ds, "login");
            dataGridView1.DataSource = ds.Tables["login"];
            conn.Close();
        }

        private void button3_Click(object sender, EventArgs e)//查询按钮
        {
            conn.Open();
            string sec = textBox1.Text;//定义变量接收查询关键字
            DataTable dtbl = (DataTable)dataGridView1.DataSource;//将目前的视图上的数据传给datatable
            DataView dv = dtbl.DefaultView;//将表的视图传给视图dv
            dv.RowFilter = " id like '%" + sec + "%' ";
            conn.Close();
        }

        private void btn_Clear_Click(object sender, EventArgs e)
        { 
            //try catch方法保证安全性
            try
            {
                int iCount = dataGridView1.SelectedRows.Count;//获取单元格行数
                if (iCount < 1)
                {
                    MessageBox.Show("已删除数据", "删除错误", MessageBoxButtons.OK,
                       MessageBoxIcon.Error);
                    return;
                }
                if (DialogResult.Yes == MessageBox.Show("是否删除选中的数据?", "提示",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Information))
                {
                    //循环遍历所有行 
                    for (int i = 0; i <= this.dataGridView1.Rows.Count - 1; i++)
                    {
                        //当前行处于选中状态,则将其删除 
                        if (true == this.dataGridView1.Rows[i].Selected)
                            this.dataGridView1.Rows.RemoveAt(i);
                    }
                    //删除任意行数据后,应该刷新dataGridView表格,使索引值从上至下按大小顺序排序
                    for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)
                    {
                        dataGridView1.Rows[i].Cells[0].Value = i + 1;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

4.总结:
利用updata更新数据库,安全系数高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值