麻烦给一段详细一点的代码,我用的是access的数据库,在窗体程序上可以修改数据库
1条回答 默认 最新
- CSDN专家-showbo 2021-10-27 17:48关注
根据上一个示例,改下Form2窗体的代码,读取数据填充datagridview后就行删除,添加,修改操作,示例如下,注意要给datagridview添加2个DataGridViewLinkColumn,并且设置UseColumnTextForLinkValue为true
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, "", ""); } } }
有帮助麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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编也可以。