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.程序代码 :

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[];
dataGridView1.DataSource = dt;
labelshow();
} private void 角色ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextBoxNull();
ds = SqlDesigner.ExecuteDataSet("select *from dtrole");
dt = ds.Tables[];
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[];
dataGridView1.DataSource = dt;
labelshow();
} private void 帮助ToolStripMenuItem_Click(object sender, EventArgs e)
{
TextBoxNull();
ds = SqlDesigner.ExecuteDataSet("select * from help");
dt = ds.Tables[];
dataGridView1.DataSource = dt;
dataGridView1.Columns[].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
//双击dataGridView1
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
string index = dataGridView1.CurrentRow.Cells[].Value.ToString();
if (label1.Text == "uid")
{
ds = SqlDesigner.ExecuteDataSet("select *from dtuser where uid='" + index + "'");
dt = ds.Tables[];
DataRow row = dt.Rows[];
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[];
DataRow row = dt.Rows[];
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[];
DataRow row = dt.Rows[];
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[].HeaderText;
label2.Text = dataGridView1.Columns[].HeaderText;
label3.Text = dataGridView1.Columns[].HeaderText;
try
{
label4.Text = dataGridView1.Columns[].HeaderText;
}
catch (Exception)
{ label4.Text = "None";
}
}
private void btn_add_Click(object sender, EventArgs e)
{
int i = ;
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 > )
{
MessageBox.Show("添加成功");
}
else
{
MessageBox.Show("添加失败");
}
} private void btn_del_Click(object sender, EventArgs e)
{
int i = ;
string currentIndex = dataGridView1.CurrentRow.Cells[].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 > )
{
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("删除失败");
}
} private void btn_update_Click(object sender, EventArgs e)
{
int i = ;
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 > )
{
MessageBox.Show("Succeed!");
}
else
{
MessageBox.Show("Failed!");
}
} }
} View All Code

c#基础在winform操作数据库,实现增删改查的更多相关文章

  1. Java数据库连接——JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  2. java操作数据库:增删改查

    不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...

  3. python测试开发django-13.操作数据库(增删改查)

    前言 django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢? 本篇详细讲解django操作mysql数 ...

  4. 9.5Django操作数据库的增删改查

    2018-9-5 18:10:52 先贴上笔记 day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n ...

  5. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

  6. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  7. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  8. c#操作数据库的增删改查语句及DataGridView简单使用

    下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...

  9. C#通过窗体应用程序操作数据库(增删改查)

    为了体现面向对象的思想,我们把“增删改查”这些函数封装到一个数据库操作类里: 为了便于窗体程序与数据库之间进行数据交互,我们建一个具有数据库行数据的类,通过它方便的在窗体程序与数据库之间传输数据: 我 ...

  10. datagridview数据绑定操作数据库实现增删改查

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...

随机推荐

  1. ubuntu14.04 安装 CUDA 7.5 / CUDA 8.0

    原文转自:http://blog.csdn.net/masa_fish/article/details/51882183 CUDA7.5和CUDA8.0的安装过程是一毛一样的.所以如果安装CUDA8. ...

  2. 调用链系列三、基于zipkin调用链封装starter实现springmvc、dubbo、restTemplate等实现全链路跟踪

    一.实现思路 1.过滤器实现思路 所有调用链数据都通过过滤器实现埋点并收集.同一条链共享一个traceId.每个节点有唯一的spanId. 2.共享传递方式 1.rpc调用:通过隐式传参.dubbo有 ...

  3. vuejs初学入门环境搭建

    一.Nodejs:    1.安装下载:http://nodejs.cn/download/    2.Node.js安装配置: http://www.runoob.com/nodejs/nodejs ...

  4. igmp组播测试环境搭建

    2.4G无线组播测试环境搭建: (1)组播源: VLC 或者 pixstream (2)无线: 2.4G AP (3)客户端PC: VLC播放器 有线直连 无线2.4G PC(组播源pixstream ...

  5. 在jsp页面,将小数转换为百分比

    <fmt:formatNumber type="number" value="${temp.illegalCount*100/temp.unitCount}&quo ...

  6. 《java程序设计》结对编程-四则运算整体总结

    需求分析(描述自己对需求的理解,以及后续扩展的可能性) 实现一个命令行程序,要求: 自动生成小学四则运算题目(加,减,乘,除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 ...

  7. JavaScript 使用 mediaDevices API 选择摄像头

    大多数智能手机都有前置和后置摄像头,当你在创建视频应用时你可能想要选择或者切换前置.后置摄像头. 如果你开发的是一款聊天应用,你很可能会想调用前置摄像头,但如果你开发的是一款拍照软件,那么你会更倾向于 ...

  8. Java内存泄漏问题

    1:java中垃圾回收机制主要完成下面两件事情: 跟踪并监控每个java对象,当某个对象处于不可达状态时,回收该对象所占的内存 清理内存分配,回收过程中产生的内存碎片 2:对于JVM的垃圾回收机制来说 ...

  9. 易错之for循环

    for i in range(3): print(i) print(i,"---") #Python的问题就在于,当循环结束以后,循环体中的临时变量i不会销毁,而是继续存在于执行环 ...

  10. Fiddler抓包7-post请求(json)

    前言上一篇讲过get请求的参数都在url里,post的请求相对于get请求多了个body部分,本篇就详细讲解下body部分参数的几种形式. 一.body数据类型 常见的post提交数据类型有四种: 1 ...