weixin_46427287 2021-10-27 17:04 采纳率: 100%
浏览 289
已结题

C#在窗体程序上编写控制台程序实现:添加、删除、修改用户名和密码

麻烦给一段详细一点的代码,我用的是access的数据库,在窗体程序上可以修改数据库

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-10-27 17:48
    关注

    根据上一个示例,改下Form2窗体的代码,读取数据填充datagridview后就行删除,添加,修改操作,示例如下,注意要给datagridview添加2个DataGridViewLinkColumn,并且设置UseColumnTextForLinkValue为true

    img

    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.OleDb;
    
    namespace WindowsFormsApp3
    {
        public partial class Form2 : Form
        {
            public Form1 loginFrm { get; set; }
            public int id { get; set; }
            public string name { get; set; }
            public Form2()
            {
                InitializeComponent();
            }
            OleDbConnection conn;
            DataTable dt;
            private void Form2_Load(object sender, EventArgs e)
            {
                conn = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=data.mdb");
                conn.Open();
                dt = new DataTable();
                new OleDbDataAdapter("select * from  [users]", conn).Fill(dt);
    
                dataGridView1.DataSource = dt;
                dataGridView1.Columns[2].HeaderText = "ID";
                dataGridView1.Columns[3].HeaderText = "用户名";
                dataGridView1.Columns[4].HeaderText = "密码";
            }
    
            private void Form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                conn.Close();
                loginFrm.Show();
            }
    
            private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
            {
                e.Cancel = e.ColumnIndex == 2;//不允许编辑ID列
            }
    
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                var col = e.ColumnIndex;
                if (col == 0)
                { //删除
                    if (MessageBox.Show("确认删除?!", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
                    {
                        if (dataGridView1.Rows.Count < 2) { MessageBox.Show("不能删除所有用户哦~~"); return; }
                        var id = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
                        if (id != "0")
                        {//新增未保存的记录,不需要操作数据库
                            var sql = "delete  from  [users] where id=" + id;
                            new OleDbCommand(sql, conn).ExecuteNonQuery();
                        }
                        dataGridView1.Rows.RemoveAt(e.RowIndex);
                    }
                }
                else if (col == 1)
                { //更新
                    var id = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
                    var un = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString().Replace("'", "''");
                    var pwd = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString().Replace("'", "''");
                    OleDbCommand cmd = new OleDbCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "select count(1) from [users] where un='" + un + "' " + (id == "0" ? "" : " and id!=" + id);
                    //用户名唯一判断
                    if ((int)cmd.ExecuteScalar() > 0) { MessageBox.Show("用户名“"+ un + "”已经存在,请确认!"); return; }
    
    
                    if (id == "0")
                    {//新增记录保存到数据库
                        
                        cmd.CommandText = "insert into [users](un,pwd) values('" + un + "' ,'" + pwd + "')";
                        cmd.ExecuteNonQuery();
                        //获取新增记录id更新datagridview
                        cmd.CommandText = "select id from [users] where un='" + un + "'";
                        dataGridView1.Rows[e.RowIndex].Cells[2].Value = cmd.ExecuteScalar();
                    }
                    else
                    {
                        cmd.CommandText = "update [users] set un='" + un + "' ,pwd='" + pwd + "' where id=" + id;
                        cmd.ExecuteNonQuery();
                    }
                    MessageBox.Show("更新成功~~");
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                dt.Rows.Add(0, "", "");
            }
        }
    }
    

    有帮助麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月28日
  • 已采纳回答 10月28日
  • 修改了问题 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥200 求能开发抖音自动回复卡片的软件
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题
  • ¥50 C#编程中使用printDocument类实现文字排版打印问题
  • ¥15 找会编程的帅哥美女 可以用MATLAB里面的simulink编程,用Keil5编也可以。