c#datagridview怎么直接修改数据库数据,最好给个事例

c#datagridview怎么直接修改数据库数据,最好给个事例,第1张

实现思路:

实现数据库和datagridview数据连接

实现修改datagridview触发事件,获取更新数据存放在变量里

通过变量的变化实现数据库更新功能。

功能代码:

using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemText;

using SystemWindowsForms;

using SystemCollections;

using SystemDataSqlClient;

namespace Quanxian

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

private int job_id;

private string job_desc;

private int min_lvl;

private int max_lvl;

private void Form2_Load(object sender, EventArgs e)

{

binddatagridview();

}

/// <summary>

/// 绑定Datagridview的方法

/// </summary>

private void binddatagridview()

{

SqlConnection sqlcon = new SqlConnection("server=;uid=sa;pwd=;database=pubs");

SqlDataAdapter sqldap = new SqlDataAdapter("select  from jobs", sqlcon);

DataSet ds = new DataSet();

sqldapFill(ds);

thisdataGridView1DataSource = dsTables[0];

}

/// <summary>

/// 编辑单元格后触发

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)

{

if (dataGridView1RowsCount > 0)

{

job_id = intParse (thisdataGridView1Rows[eRowIndex]Cells[0]ValueToString());

job_desc = thisdataGridView1Rows[eRowIndex]Cells[1]ValueToString();

min_lvl = intParse(thisdataGridView1Rows[eRowIndex]Cells[2]ValueToString());

max_lvl = intParse(thisdataGridView1Rows[eRowIndex]Cells[3]ValueToString());

}

}

/// <summary>

/// 修改

/// </summary>

private void button1_Click(object sender, EventArgs e)

{

SqlConnection sqlcon = new SqlConnection("server=;uid=sa;pwd=;database=pubs");

string str = "update jobs set job_desc='" + job_desc + "',min_lvl=" + min_lvl + ",max_lvl=" + max_lvl + " where job_id=" + job_id + "";

SqlCommand sqlcom = new SqlCommand(str,sqlcon);

try

{

sqlconOpen();

if (sqlcomExecuteNonQuery() > 0)

MessageBoxShow("保存成功");

else

MessageBoxShow("保存失败!");

}

catch

{

//异常

}

finally

{ sqlconClose();}

}

/// <summary>

/// 刷新

/// </summary>

private void button2_Click(object sender, EventArgs e)

{

binddatagridview();

}

}

}

如果是sqlserver数据库,其实对于某列上不存在不让修改的说法,sqlserver数据库数据控制原理是角色控制,也就是说我们对于某一个角色去下定义,让隶属于这个角色的用户不能够更新数据。或者在某个角色的基础上不分配或是回收对某一列的权限!如果是这种情况,用一个能修改的角度登陆才行。

还有另一种就是所谓的触发器,一旦发现你修改,立即返回原数据,这样你也是永远修改不了的!这时你要找到那个触发器,将触发器删除后再进行修改,然后加回触发器即可!

但这两种情况都是对某一列下的定义(我们称为锁定粒度为列)不可能是某一个单元格!

如果你是站在erp管理的基础上不让你修改那是十分正常的!

在企业管理器中使用图形方式(如二楼给的图)还是语句,则没有任何的区别!

以上就是关于c#datagridview怎么直接修改数据库数据,最好给个事例全部的内容,包括:c#datagridview怎么直接修改数据库数据,最好给个事例、在数据库 附加的数据文件 修改表里的某个用户提示无法编辑单元 有什么办法可以修改这个单元格吗、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10198025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存