DataGridView知识点

  1. 简单示例

(1)代码

SqlDataAdapter da;

 DataSet ds;

 string sql ="select 列名 from 表名";

using(SqlConnection conn=new SqlConnection (DBHelper.connString))

{

da=new SqlDataAdapter(sql,conn);

ds=new DataSet();

da.fill(ds);

DataGridView1.DataSource=ds.Tables[];

}

(2)代码解析

上面用到了两个类,SqlDataAdapter 和DataSet 。

DataSet对象可以看做是内存中的数据库,相当把数据库中需要的表、数据行、数据列和表之间的关系放到内存中。创建DataSet 后,可以独立出数据,不需要和数据库保持连接。程序可以从DataSet 中直接读取数据。ds.Tables[0]; 表示数据集中的第一张表。

SqlDataAdapter 对象,是用于SQL Server数据库的数据适配器。使用适配器SqlDataAdapter 的步骤是:

1)创建数据库连接对象

SqlConnection conn=new SqlConnection (DBHelper.connString);

2)建立数据库查询语句

string sql ="select 列名 from 表名";

3)通过以上创建的sql语句和连接对象创建SqlDataAdapter对象

SqlDataAdapter da = new SqlDataAdapter(sql,conn);

4)调用SqlDataAdapter 的fill();方法向数据集填充数据。

DataSet ds=new DataSet();

da.fill(ds);

5)有了数据集以后,只需要设置DataGridView控件的DataSource属性。数据集的索引从0开始如果是访问第一张表用Tables[0]表示。

DataGridView1.DataSource=ds.Tables[0];

2.示例

namespace 药品信息管理系统
{
public partial class frm_ClientTable : Form
{
public frm_ClientTable()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;
} private void frm_ClientTable_Load(object sender, EventArgs e)
{ } private void btn_Load_Click(object sender, EventArgs e)
{
using (SqlConnection sqlConnection = new SqlConnection(DBHelper.connString))
{
SqlCommand sqlCommand = new SqlCommand();
//声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection;
//将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = "SELECT * FROM tb_Client;";
//指定SQL命令的命令文本;该命令查询所有学生;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器;
sqlDataAdapter.SelectCommand = sqlCommand; //将SQL数据适配器的查询命令属性指向SQL命令;
DataTable ClientTable = new DataTable();
//声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
sqlConnection.Open(); //打开SQL连接;
sqlDataAdapter.Fill(ClientTable);
//SQL数据适配器读取数据,并填充学生数据表;
sqlConnection.Close(); //关闭SQL连接;
this.dgv_Client.Columns.Clear(); //数据网格视图的列集合清空;
this.dgv_Client.DataSource = ClientTable; //将数据网格视图的数据源设为学生数据表;
this.dgv_Client.Columns["CNo"].HeaderText = "客户编号"; //将数据网格视图的指定列的表头文本设为中文;
this.dgv_Client.Columns["CName"].HeaderText = "客户名称";
this.dgv_Client.Columns["CAddress"].HeaderText = "地址";
this.dgv_Client.Columns["CTel"].HeaderText = "联系电话";
this.dgv_Client.Columns["CName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
this.dgv_Client.Columns[this.dgv_Client.Columns.Count - ].AutoSizeMode = //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
DataGridViewAutoSizeColumnMode.Fill; }
} private void btn_Update_Click(object sender, EventArgs e)
{
using (SqlConnection sqlConnection = new SqlConnection(DBHelper.connString))
{
SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = //指定SQL命令的命令文本;
"UPDATE tb_Client"
+ " SET CName=@CName,CAddress=@CAddress,CTel=@CTel"
+ " WHERE CNo=@CNo;"; sqlCommand.Parameters.Add("@CName", SqlDbType.VarChar, , "CName"); //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
sqlCommand.Parameters.Add("@CAddress", SqlDbType.VarChar, , "CAddress");
sqlCommand.Parameters.Add("@CTel", SqlDbType.VarChar, , "CTel");
sqlCommand.Parameters.Add("@CNo", SqlDbType.Char, , "CNo"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
sqlDataAdapter.UpdateCommand = sqlCommand; //将SQL数据适配器的更新命令属性指向SQL命令;
DataTable ClientTable = (DataTable)this.dgv_Client.DataSource; //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;
sqlConnection.Open(); //打开SQL连接;
int rowAffected = sqlDataAdapter.Update(ClientTable);
sqlConnection.Close();
if (rowAffected > )
{
MessageBox.Show("更新" + rowAffected.ToString() + "行。");
}
else
{
MessageBox.Show("not ok");
} //SQL数据适配器根据学生数据表提交更新,并返回受影响行数; }
} private void btn_Add_Click(object sender, EventArgs e)
{ //未完成
using (SqlConnection sqlConnection = new SqlConnection(DBHelper.connString))
{
SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = //指定SQL命令的命令文本;
"insert tb_Client (CNo,CName,CTel,CAddress)values"
+ "(@CNo,@CName,@CTel,@CAddress)"; sqlCommand.Parameters.Add("@CName", SqlDbType.VarChar, , "CName"); //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
sqlCommand.Parameters.Add("@CAddress", SqlDbType.VarChar, , "CAddress");
sqlCommand.Parameters.Add("@CTel", SqlDbType.VarChar, , "CTel");
sqlCommand.Parameters.Add("@CNo", SqlDbType.Char, , "CNo"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
sqlDataAdapter.UpdateCommand = sqlCommand; //将SQL数据适配器的更新命令属性指向SQL命令;
DataTable ClientTable = (DataTable)this.dgv_Client.DataSource; //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;
sqlConnection.Open(); //打开SQL连接;
int i = sqlCommand.ExecuteNonQuery();
if (i == )
{
MessageBox.Show("OK");
}
else
MessageBox.Show("not OK");
//int rowAffected = sqlDataAdapter.Update(ClientTable);
sqlConnection.Close();
MessageBox.Show("添加" + i.ToString() + "行。");
//SQL数据适配器根据学生数据表提交更新,并返回受影响行数; }
} private void btn_Delete_Click(object sender, EventArgs e)
{ //未完成
using (SqlConnection sqlConnection = new SqlConnection(DBHelper.connString))
{
SqlCommand sqlCommand = new SqlCommand(); //声明并实例化SQL命令;
sqlCommand.Connection = sqlConnection; //将SQL命令的连接属性指向SQL连接;
sqlCommand.CommandText = //指定SQL命令的命令文本;
"delete from tb_Client"
+ " WHERE CName='"+this.dgv_Client .CurrentRow .Cells [].ToString ()+"'";; //sqlCommand.Parameters.Add("@CName", SqlDbType.VarChar, 0, "CName"); //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
//sqlCommand.Parameters.Add("@CAddress", SqlDbType.VarChar, 0, "CAddress");
//sqlCommand.Parameters.Add("@CTel", SqlDbType.VarChar, 0, "CTel");
//sqlCommand.Parameters.Add("@CNo", SqlDbType.Char, 10, "CNo"); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(); //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
sqlDataAdapter.UpdateCommand = sqlCommand; //将SQL数据适配器的更新命令属性指向SQL命令;
DataTable ClientTable = (DataTable)this.dgv_Client.DataSource; //声明数据表,并指向数据网格视图的数据源;数据源默认类型为object,还需强制转换类型;
sqlConnection.Open(); //打开SQL连接;
int i = sqlCommand.ExecuteNonQuery();
if (i >)
{
MessageBox.Show("OK");
}
else
MessageBox.Show("not OK");
//int rowAffected = sqlDataAdapter.Update(ClientTable);
sqlConnection.Close();
MessageBox.Show("删除" + i.ToString() + "行。");
//SQL数据适配器根据学生数据表提交更新,并返回受影响行数; }
}
}
}

DataGirdView的更多相关文章

  1. WinForm的DataGirdView判断CheckBox是否被选中

    首先我们先设置下DataGirdView的列. 然后启动下编辑,就可以选中与不选中了.在之后通过. #region 便利被选中的行,然后导出 DataTable dtreport = new Data ...

  2. C# DataGirdview手动添加数据,导出txt文件并自动对齐

    //DataGirdview手动添加数据 private void btnDataGirdView_Click(object sender,EventArgs e) {       dataGridV ...

  3. DataGirdView 常用操作

    1.将数据源的某列添加到已有DataGirdView的列 例如:将文件夹下所有文件名添加到DataGirdView 的文件名一列,图片如下: 首先在datagridview把文件名列的DATAPROP ...

  4. c# DataGirdView动态刷新

    using MySql.Data.MySqlClient;using System; using System.Data; using System.Threading; using System.W ...

  5. c#datagirdview ,用DataSource 方式赋值,然后更新出问题问题

    先说一下程序 主窗体  ,两个子窗体A,B.嵌入主窗体的Panel里边 主窗体,启动类C里边的查找方法,查到的值,通过事件委托送到窗体A C类里同时修改查询表,把修改的查询表通过事件委托发送给窗体B, ...

  6. DataGirdView 设置单元格居中

    设置标题行居中: dgvShow.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter ...

  7. DataGirdView 编辑项时的验证

    dgvConfig.DataSource = CreateTable(); dgvConfig.Columns["编号"].ReadOnly = true; //只读 dgvCon ...

  8. c# datagirdview

    1.设置位于控件最左上角的标题单元格内容 this.dataGridView1.TopLeftHeaderCell.Value = "序号"; 2. 3.

  9. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

随机推荐

  1. Kubernetes系列三:二进制安装Kubernetes环境

    安装环境: # 三个节点信息 192.168.31.11 主机名:env11 角色:部署Master节点/Node节点/ETCD节点 192.168.31.12 主机名:env12 角色:部署Node ...

  2. 关于前端JS的总结

    简介 JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等.主要执行在浏览器上,为HTML页面提供动态效果,而且JavaScript是一种脚本语言,它的代码是解释执行 ...

  3. oracle时间处理tochar的黑幕坑

    建议改成 在用别人黑不隆东,各种商业套路洗脑下的产品时,能简约弱智就被给自己留坑 做技术没踩过h2这类开源数据库的源码设计,即使砸了一堆时间看了<数据库系统基础教程>,<数据库系统实 ...

  4. << 和>> 的计算公式

    在java中,一个数左移n位,就是将这个数乘以2的n次方,右移就是将这个数除以2的n次方. 如: 8>>2 = 2  (8/2^2) 15 << 3 = 120  (15*(2 ...

  5. springboot多数据源+jta事务管理配置

    1.创建一个maven项目,导入相关配置: <?xml version="1.0" encoding="UTF-8"?> <project x ...

  6. 创建可执行jar包

    1.编辑manifest.mf文件 Main-Class:空格 你的类名 回车 2.打包 jar cvfm 类名.jar manifest.mf 类名.class 3使用 java -jar 类名.j ...

  7. [LC] 1048. Longest String Chain

    Given a list of words, each word consists of English lowercase letters. Let's say word1 is a predece ...

  8. 吴裕雄--天生自然python学习笔记:python 建立 Firebase 数据库连接

    Python 程序通过 python-firebase 包可以存取 Firebase 数据库. 使用 python-firebase 包 首先必须安装 python-firebase 包,安装方法如下 ...

  9. 2017Google开发者大会

    2017年12月14日有幸去上海跨国采购中心参加了2017Google开发者大会,这个大会有很多很有意思的展会以及技术分享.主题涵盖 Android.移动网络.Firebase.机器学习.云服务.AR ...

  10. RDS的xb文件恢复到本地mysql5.6版本数据库

    参考博客: https://blog.csdn.net/a18838964650/article/details/82800621  安装qpress软件 https://www.cnblogs.co ...