Winform开发之DataGridView的增删改
DataGridView是一个非常强大的控件,用法很多。这里介绍一个简单的增删改例子。
贴效果图

右侧输入学生信息点击新增,将数据增加到数据库,并且加载到datagridview中,点击选择某条数据修改,将选择的数据加载到右侧的编辑框内,修改后点击修改即可,也可直接删除。
贴代码
public partial class Form1 : Form
{ private static string strConn = "Data Source=210.26.*.*;Initial Catalog=Test;User ID=sa;Password=****";
private SqlConnection conn = new SqlConnection(strConn);
private string sqlId = "";
private SqlCommand cmd = null;
private SqlDataAdapter da = null; public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//SqlDataReader studentlist = cmd.ExecuteReader();
//bindingSource1.DataSource = studentlist;
//dataGridView1.DataSource = bindingSource1;
BindData();
}
private void BindData()
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
sqlId = "select * from [Student] ";
cmd = new SqlCommand(sqlId, conn);
da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "student");
dataGridView1.AutoGenerateColumns = false;//此行指定不需要自动绑定数据列,数据列在dataGridView的属性items集合里指定,必须放在绑定数据之前哦,放到后面是没用的
//dataGridView1.DataSource=ds.Tables["Student"];此处直接用DataTalbe绑定,与下面两行代码的效果是一样的
dataGridView1.DataSource = ds;//使用Dataset,单必须指定DataMember,因为DataSet是DataTable的集合,而datagridview只能绑定一个datatable
dataGridView1.DataMember = "Student";
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} private void btnAdd_Click(object sender, EventArgs e)
{
try
{
string username = textBox1.Text;
string homeaddress = textBox2.Text;
string info = textBox3.Text;
conn.Open();
//准备一个SQL语句,其中以@开头的在这里只表示一种变量,一种参数。
sqlId = "Insert into Student(StudenTnAME, HomeAddress, Content)values(@StudenTnAME,@HomeAddress,@Content)";
//创建一个参数数组,并且用花括号里面的值来初始化数组
SqlParameter[] parameters = new[]
{
//这里也有个初始化的过程,将name复制给@name,下面的是一样的
new SqlParameter("@StudenTnAME",username),//而小括号右边的name就是程序一开始我们得到的用户输入的值
new SqlParameter("@HomeAddress",homeaddress),
new SqlParameter("@Content",info)
};
cmd=conn.CreateCommand();
//利用对象的属性,把sql字符串放进命令(设置要对数据源执行的SQL语句)
cmd.CommandText = sqlId;
//先利用对象的Parameters属性获取参数集,再将参数集的值附加到后面
cmd.Parameters.AddRange(parameters);
int x=cmd.ExecuteNonQuery();
if (x ==)
{
//如果添加成功,那么给用户提示一下
MessageBox.Show("添加成功");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
} }
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
} //点击选中行,将内容放到编辑框内
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells["studentname"].Value.ToString();
textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells["homeaddress"].Value.ToString();
textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells["info"].Value.ToString();
} //对修改该内容进行保存
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
conn.Open();
//准备一个SQL语句,拼接一个sql串,这里有别于ADD里面传参
sqlId = "update Student set StudenTnAME='" + textBox1.Text + "',HomeAddress='" + textBox2.Text + "',Content='" + textBox3.Text + "' where ID=" + Convert.ToInt32(dataGridView1.CurrentRow.Cells[].Value.ToString()); cmd = conn.CreateCommand();
//利用对象的属性,把sql字符串放进命令(设置要对数据源执行的SQL语句)
cmd.CommandText = sqlId; int x = cmd.ExecuteNonQuery();
if (x == )
{
//如果添加成功,那么给用户提示一下
MessageBox.Show("修改成功");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
BindData();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
//删除选中行
private void btnDel_Click(object sender, EventArgs e)
{
try
{
conn.Open();
//准备一个SQL语句,拼接一个sql串,这里有别于ADD里面传参
sqlId = " delete from Student where ID=" +Convert.ToInt32(dataGridView1.CurrentRow.Cells[].Value.ToString()); cmd = conn.CreateCommand();
//利用对象的属性,把sql字符串放进命令(设置要对数据源执行的SQL语句)
cmd.CommandText = sqlId; int x = cmd.ExecuteNonQuery();
if (x == )
{
//如果添加成功,那么给用户提示一下
MessageBox.Show("删除成功");
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
BindData();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
} }
就是这么简单,但是我们可以看到数据的操作是比较繁琐的,后面的博文会封装一个数据库操作类,进行操作。
Winform开发之DataGridView的增删改的更多相关文章
- Winform开发之DataGridView事件和属性
DataDridView的事件和属性非常多,一一介绍还是不现实,这里借鉴一下园友和MSDN上的介绍吧 1.C#中 DataGridView 属性说明(转载) 2.MSDN上DataGridView事件 ...
- 安卓开发之sql语句增删改查2(利用谷歌封装好的API进行增删改查)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 安卓开发之sql语句增删改查
package com.lidaochen.phonecall; import android.content.Context; import android.database.sqlite.SQLi ...
- 使用DataGridView进行增删改查,并同步到数据库
DataGridView控件具有极高的可配置性和可扩展性.它提供有大量的属性.方法和事件,能够用来对该控件的外观和行为进行自己定义.以下通过一个小样例来展示DataGridView进行增删改查,并同步 ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- Winform开发之SqlCommand常用属性和方法
SqlCommand类表示要对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程,有若干个属性和若干个方法,具体的各类方法使用可以从msdn上找到. 这里介绍几个常用东 ...
- winform开发之UI系列
1.如何构造一个漂亮的主窗体 主要讲述如何对一个新建窗体的美化过程,涉及到经常需要用到的几个属性我会着重强调它的用法,并不断更新它,因为楼主也正在探索中.... 步骤如下: vs新建一个winform ...
- winform 开发之Control.InvokeRequired
Control.InvokeRequired 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中. InvokeRequir ...
- 对datagridview进行增删改(B)
create DATABASE stu ON ( name='stu.mdf', filename='F:\胡浴东\数据库\stu数据库\stu.mdf', size=, filegrowth= ) ...
随机推荐
- java打印随机函数
一 ,打印1-10的随机函数 public static void randomprint(){ for (int i=0;i<100;i++){ //打印一百次 ...
- 内存记号(Memory Trail)[自定义的名字] --调试方法
即使你把输出导向到文件中,运转记录花费的时间所带来的冲击,仍然足够改变程序的执行结果.如果要改善这种情况,我必须回到一个我所谓的“Memory Trails”(内存记号)的低阶技术中.为了使用 mem ...
- Django:学习笔记(9)——视图
Django:学习笔记(9)——视图 基础视图 基于函数的视图,我们需要在使用条件语句来判断请求类型,并分支处理.但是在基于类的视图中,我们可以在类中定义不同请求类型的方法来处理相对应的请求. 基于函 ...
- 20154312曾林 - Exp1 PC平台逆向破解
1.逆向及Bof基础实践说明 1.1-实践目标 对象:pwn1(linux可执行文件) 目标:使程序执行另一个代码片段:getshell 内容: 手工修改可执行文件,改变程序执行流程,直接跳转到get ...
- 服务器环境配置nginx / php / php-fpm(一)
登陆,升级应用,查询和关闭selinux yum update getenforce setenforce 0 vi /etc/selinux 添加非root用户 adduser deploy pas ...
- 搞定PHP面试 - 正则表达式知识点整理
一.简介 1. 什么是正则表达式 正则表达式(Regular Expression)就是用某种模式去匹配一类字符串的一种公式.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.正则表 ...
- i春秋之荒岛求生write-up
i春秋之荒岛求生write-up 第一关 这一关的答案是在题目的最后一句加粗的 躺平等死 和 勇敢战斗 中进行选择,结合前文中提到的 如果你想出去,就必须打败他们 自然得出答案是 勇敢战斗 . 第二关 ...
- ubuntu 18.04 64bit build tensorflow report error:C++ compilation of rule '//tensorflow/core/kernels:broadcast_to_op' failed (Exit 4)
注意:笔者未能在Ubuntu18.04 64bit下成功从源码编译cpu版本的tensorflow Ans: 1.You are likely running out of memory. Try r ...
- [SpringBoot] - 配置文件的多种形式及优先级
学习两个注解: @PropertySource @ImportResource ↓ @ConfigurationProperties 与 @Bean 结合为属性赋值 与 ...
- HDU 1503 Advanced Fruits(LCS+记录路径)
http://acm.hdu.edu.cn/showproblem.php?pid=1503 题意: 给出两个串,现在要确定一个尽量短的串,使得该串的子串包含了题目所给的两个串. 思路: 这道题目就是 ...