好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

1.前言:

运行环境:vs2013+sql2008+windows10

程序界面预览:

使用的主要控件: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!" );

    }

   }

 

  

  }

}

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

原文链接:http://www.cnblogs.com/zhiboday/p/6107057.html

dy("nrwz");

查看更多关于C#在winform中实现数据增删改查等功能的详细内容...

  阅读:47次