欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#在winform中实现数据增删改查等功能

程序员文章站 2022-03-10 14:31:55
winform中利用ado.net实现对单表的增删改查的详细例子,具体如下: 1.前言: 运行环境:vs2013+sql2008+windows10 程序界面...

winform中利用ado.net实现对单表的增删改查的详细例子,具体如下:

1.前言:

运行环境:vs2013+sql2008+windows10

程序界面预览:
C#在winform中实现数据增删改查等功能

使用的主要控件:datagridview和menustrip等。

 2.功能具体介绍:

1.首先,我们要先实现基本的数据操作,增删改查这几个操作。

(1)先定义一个数据库操作的公共类:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
using system.data;
using system.configuration;
using system.data.sqlclient;
using system.security.cryptography;

namespace data
{
 class sqldesigner
 {
  private static string connstr = configurationmanager.connectionstrings["data"].connectionstring;
  /// <summary>
  /// 返回受影响的数据行数
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public static int executenoquery(string sql)
  {
   using (sqlconnection conn=new sqlconnection(connstr))
   {
    conn.open();
    using (sqlcommand cmd=conn.createcommand())
    {
     cmd.commandtext = sql;
     return cmd.executenonquery();
     
    }
   }
  }
  /// <summary>
  /// 返回一个数据集
  /// </summary>
  /// <param name="sql"></param>
  /// <returns></returns>
  public static dataset executedataset(string sql)
  {
   using (sqlconnection xonn=new sqlconnection(connstr))
   {
    xonn.open();
    using (sqlcommand cmd = xonn.createcommand())
    {
     cmd.commandtext = sql;
     sqldataadapter adapter = new sqldataadapter(cmd);
     dataset dataset = new dataset();
     adapter.fill(dataset);
     return dataset;
    }
   }
  }
  public static object executescalar(string sql)
  {
   using (sqlconnection conn=new sqlconnection(connstr))
   {
    conn.open();
    using (sqlcommand cmd=conn.createcommand())
    {
     cmd.commandtext = sql;
     return cmd.executescalar();
    }
   }
  }
  /// <summary>
  /// md5加密
  /// </summary>
  /// <param name="strpwd"></param>
  /// <returns></returns>
  public static string getmd5(string strpwd)
  {
   string pwd = "";
   //实例化一个md5对象
   md5 md5 = md5.create();
   // 加密后是一个字节类型的数组
   byte[] s = md5.computehash(encoding.utf8.getbytes(strpwd));
   //翻转生成的md5码  
   s.reverse();
   //通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
   //只取md5码的一部分,这样恶意访问者无法知道取的是哪几位
   for (int i = 3; i < s.length - 1; i++)
   {
    //将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(x)则格式后的字符是大写字符
    //进一步对生成的md5码做一些改造
    pwd = pwd + (s[i] < 198 ? s[i] + 28 : s[i]).tostring("x");
   }
   return pwd;
  }
 
 }
}

(2)运用建立的公共类,进行数据库的操作:

a.数据查询:

ds = sqldesigner.executedataset("select * from dtuser");   
dt = ds.tables[0];   
datagridview1.datasource = dt;

b.数据添加

 i = sqldesigner.executenoquery("insert into dtuser(uid,uname,pwd,uflag)values('" + textbox1.text + "','" + textbox2.text + "','" +textbox3.text+ "','" + textbox4.text + "')");

c.数据删除

string currentindex = datagridview1.currentrow.cells[0].value.tostring();
i = sqldesigner.executenoquery("delete from dtuser where uid='" + currentindex + "'");

d.数据修改

i = sqldesigner.executenoquery("update dtrole set rname='" + textbox2.text + "',flag='" + textbox3.text + "'where rid='" + textbox1.text + "'");

e.一些细节

这里,我们修改一下添加数据,让添加的数据变成字符串的形式,也就是加密操作:

string str = sqldesigner.getmd5(textbox3.text.trim());    
 i = sqldesigner.executenoquery("insert into dtuser(uid,uname,pwd,uflag)values('" + textbox1.text + "','" + textbox2.text + "','" + str + "','" + textbox4.text + "')");

(3)datagridview控件:

//绑定数据源
datagridview1.datasource = dt;
//自动适应列宽
datagridview1.columns[1].autosizemode = datagridviewautosizecolumnmode.allcells;

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;

namespace data
{
 public partial class form1 : form
 {
  
  public form1()
  {
   initializecomponent();   
  }     
    
  dataset ds = new dataset();
  datatable dt = new datatable();

  private void textboxnull()
  {
   textbox1.text = "";
   textbox2.text = "";
   textbox3.text = "";
   textbox4.text = "";
  }
  private void 用户toolstripmenuitem_click(object sender, eventargs e)
  {
   textboxnull();
   ds = sqldesigner.executedataset("select * from dtuser");   
   dt = ds.tables[0];
   datagridview1.datasource = dt;
   labelshow();
  }

  private void 角色toolstripmenuitem_click(object sender, eventargs e)
  {
   textboxnull();
   ds = sqldesigner.executedataset("select *from dtrole");
   dt = ds.tables[0];
   datagridview1.datasource = dt;
   label4.text = "none";
   textbox4.text = "none";
   labelshow();
  }

  private void 对象toolstripmenuitem_click(object sender, eventargs e)
  {
   textboxnull();
   ds = sqldesigner.executedataset("select * from dtfunction");
   dt = ds.tables[0];
   datagridview1.datasource = dt;
   labelshow();
  }

  private void 帮助toolstripmenuitem_click(object sender, eventargs e)
  {
   textboxnull();
   ds = sqldesigner.executedataset("select * from help");
   dt = ds.tables[0];
   datagridview1.datasource = dt;
   datagridview1.columns[1].autosizemode = datagridviewautosizecolumnmode.allcells;
  }
  //双击datagridview1
  private void datagridview1_celldoubleclick(object sender, datagridviewcelleventargs e)
  {
   string index = datagridview1.currentrow.cells[0].value.tostring();
   if (label1.text == "uid")
   {
    ds = sqldesigner.executedataset("select *from dtuser where uid='" + index + "'");
    dt = ds.tables[0];
    datarow row = dt.rows[0];
    textbox1.text = row["uid"].tostring();
    textbox2.text = row["uname"].tostring();
    textbox3.text = row["pwd"].tostring();
    textbox4.text = row["uflag"].tostring();
   }
   if (label1.text == "rid")
   {
    ds = sqldesigner.executedataset("select *from dtrole where rid='" + index + "'");
    dt = ds.tables[0];
    datarow row = dt.rows[0];
    textbox1.text = row["rid"].tostring();
    textbox2.text = row["rname"].tostring();
    textbox3.text = row["flag"].tostring();
    textbox4.text = "none";
   }
   if (label1.text == "fid")
   {
    ds = sqldesigner.executedataset("select *from dtfunction where fid='" + index + "'");
    dt = ds.tables[0];
    datarow row = dt.rows[0];
    textbox1.text = row["fid"].tostring();
    textbox2.text = row["fname"].tostring();
    textbox3.text = row["flag"].tostring();
    textbox4.text = row["uflag"].tostring();
   }
  }
  private void labelshow() 
  {
   label1.text = datagridview1.columns[0].headertext;
   label2.text = datagridview1.columns[1].headertext;
   label3.text = datagridview1.columns[2].headertext;
   try
   {
    label4.text = datagridview1.columns[3].headertext;
   }
   catch (exception)
   {

    label4.text = "none";
   }               
  }    
  private void btn_add_click(object sender, eventargs e)
  {   
   int i = 0;
   if (label1.text=="uid")
   {
    string str = sqldesigner.getmd5(textbox3.text.trim());    
    i = sqldesigner.executenoquery("insert into dtuser(uid,uname,pwd,uflag)values('" + textbox1.text + "','" + textbox2.text + "','" + str + "','" + textbox4.text + "')");
   }
   else if (label1.text == "rid")
   {    
    i = sqldesigner.executenoquery("insert into dtrole(rid,rname,flag)values('" + textbox1.text + "','" + textbox2.text + "','" + textbox3.text + "')");
   }
   else
   {
    try
    {
     i = sqldesigner.executenoquery("insert into dtfunction(fid,rid,uid,uflag)values('" + textbox1.text + "','" + textbox2.text + "','" + textbox3.text + "','" + textbox4.text + "')");
    }
    catch (exception)
    {
     messagebox.show("添加失败");
    }
    
   }
   
   if (i > 0)
   {
    messagebox.show("添加成功");
   }
   else
   {
    messagebox.show("添加失败");
   }          
  }
  
  private void btn_del_click(object sender, eventargs e)
  {
   int i = 0;
   string currentindex = datagridview1.currentrow.cells[0].value.tostring();
   if (label1.text=="uid")
   {
    i = sqldesigner.executenoquery("delete from dtuser where uid='" + currentindex + "'");
   }
   else if (label1.text=="fid")
   {
    i = sqldesigner.executenoquery("delete from dtfunction where fid='" + currentindex + "'");
   }
   else
   {
    i = sqldesigner.executenoquery("delete from dtrole where rid='" + currentindex + "'");
   }
   if (i > 0)
   {
    messagebox.show("删除成功");
   }
   else
   {
    messagebox.show("删除失败");
   }
  }

  private void btn_update_click(object sender, eventargs e)
  {
   int i = 0;
   if (label1.text == "rid")
   {
    i = sqldesigner.executenoquery("update dtrole set rname='" + textbox2.text + "',flag='" + textbox3.text + "'where rid='" + textbox1.text + "'");
   }
   if (label1.text == "uid")
   {
    i = sqldesigner.executenoquery("update dtuser set uname='" + textbox2.text + "',pwd='" + textbox3.text + "',uflag='" + textbox4.text + "'where uid='" + textbox1.text + "'");
   }
   if (label1.text=="fid")
   {
    i = sqldesigner.executenoquery("update dtfunction set rid='" + textbox2.text + "',uid='" + textbox3.text + "',uflag='" + textbox4.text + "'where fid='" + textbox1.text + "'");
   }
   if (i > 0)
   {
    messagebox.show("succeed!");
   }
   else
   {
    messagebox.show("failed!");
   }
  } 

  
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。