DataGridView中数据存入数据库方法

合集下载

将DataGridView中的数据导出至Excel中(亲测成功)

将DataGridView中的数据导出至Excel中(亲测成功)

将DataGridView中的数据导出至Excel(亲测成功)一、建立一个静态方法public static void ExportAsExcel(DataGridView dgv){OutputAsExcelFile(DGVHelper.DataGridViewToTable(dgv));}二、把DataGridView中的数据转换到DataTable中///<summary>///将DataGridView中的数据转换为DataTable包含隐藏列///</summary>///<param name="dgv"></param>///<returns></returns>public static DataTable DataGridViewToTable(DataGridView dgv){DataTable dt=new DataTable();//循环列标题名称,处理了隐藏的行不显示for(int count=0;count<dgv.Columns.Count;count++){if(dgv.Columns[count].Visible==true){dt.Columns.Add(dgv.Columns[count].HeaderText.ToString());}}//循环行,处理了隐藏的行不显示for(int count=0;count<dgv.Rows.Count;count++){DataRow dr=dt.NewRow();int curr=0;for(int countsub=0;countsub<dgv.Columns.Count;countsub++){if(dgv.Columns[countsub].Visible==true){if(dgv.Rows[count].Cells[countsub].Value!=null){dr[curr]=dgv.Rows[count].Cells[countsub].Value.ToString();}else{dr[curr]="";}curr++;}}dt.Rows.Add(dr);}return dt;}三、把DataTable中的数据导出到Excel中public static void OutputAsExcelFile(DataTable dt){if(dt.Rows.Count<=0){MessM.PromptInfo("提示","无数据!");return;}SaveFileDialog s=new SaveFileDialog{Title="保存Excel文件",Filter="Excel文件(*.xls)|*.xls",FilterIndex=1};if(s.ShowDialog()==DialogResult.OK)filePath=s.FileName;elsereturn;DTExportToExcel(dt);}///<summary>///第二步:导出dataTable到Excel///</summary>///<param name="dt"></param>private static void DTExportToExcel(DataTable dt){//第二步:导出dataTable到Excellong rowNum=dt.Rows.Count;//行数int columnNum=dt.Columns.Count;//列数Excel.Application m_xlApp=new Excel.Application{DisplayAlerts=false,//不显示更改提示Visible=false};Excel.Workbooks workbooks=m_xlApp.Workbooks;Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1try{string[,]datas=new string[rowNum+1,columnNum];for(int i=0;i<columnNum;i++)//写入字段datas[0,i]=dt.Columns[i].Caption;//Excel.Range range=worksheet.get_Range(worksheet.Cells[1,1],worksheet.Cells[1, columnNum]);Excel.Range range=m_xlApp.Range[worksheet.Cells[1,1],worksheet.Cells[1, columnNum]];range.Interior.ColorIndex=15;//15代表灰色range.Font.Bold=true;range.Font.Size=10;int r=0;for(r=0;r<rowNum;r++){for(int i=0;i<columnNum;i++){object obj=dt.Rows[r][dt.Columns[i].ToString()];datas[r+1,i]=obj==null?"":"'"+obj.ToString().Trim();//在obj.ToString()前加单引號是为了防止自己主动转化格式}Application.DoEvents();//加入进度条}//Excel.Range fchR=worksheet.get_Range(worksheet.Cells[1,1], worksheet.Cells[rowNum+1,columnNum]);Excel.Range fchR=m_xlApp.Range[worksheet.Cells[1,1],worksheet.Cells[rowNum+1, columnNum]];fchR.Value2=datas;worksheet.Columns.EntireColumn.AutoFit();//列宽自适应。

NET中DataGridView数据绑定方法详解

NET中DataGridView数据绑定方法详解

NET中DataGridView数据绑定方法详解
1.使用数据集进行数据绑定
-创建一个数据集对象,并指定相应的表结构。

-从数据库中填充数据到数据集中。

- 将DataGridView的数据源属性设置为数据集中的表。

- 设置DataGridView的自动列生成属性为True,以自动生成列。

2.使用数据表进行数据绑定
数据表是数据集中的一种结构,它由行和列组成。

使用数据表进行数据绑定的步骤如下:
-创建一个数据表对象,并定义列名称和类型。

-从数据库中填充数据到数据表中。

- 将DataGridView的数据源属性设置为数据表。

3. 使用BindingSource进行数据绑定
- 创建一个BindingSource对象。

- 设置BindingSource的DataSource属性为数据源。

- 将BindingSource绑定到DataGridView的数据源属性上。

4.使用数据绑定源进行数据绑定
-创建一个数据绑定源对象,并指定相应的数据源。

- 将数据绑定源绑定到DataGridView的数据源属性上。

5.自定义数据绑定
如果以上方法无法满足需求,还可以使用自定义数据绑定方法。

自定义数据绑定通常涉及以下几个方面:
- 创建一个数据源类,实现数据源接口,如IList、IBindingList或ICollectionView。

- 创建一个继承自DataGridView的自定义控件。

vb6 datagridview控件用法

vb6 datagridview控件用法

一、VB6简介Visual Basic 6.0(VB6)是微软公司于1998年推出的一款集成开发环境(IDE),是一种基于事件驱动的第三代事件驱动语言。

它允许开发者以快速、简单的方式创建Windows应用程序。

VB6具有可视化编程的特点,允许开发者以拖拽控件的方式构建界面,极大地提高了开发效率。

二、DataGridView控件概述DataGridView控件是VB6中用于显示和编辑数据的控件,它提供了功能强大的数据表格展示能力,可以实现类似Excel表格的功能。

它是VB6中用于数据展示的重要控件之一,具有灵活性高、界面友好等特点。

三、DataGridView控件的基本用法使用DataGridView控件展示数据一般需要以下步骤:1. 在VB6的工具箱中找到DataGridView控件,将其拖拽到窗体中。

2. 设置数据源:可以通过ADODB连接数据库,或者手动添加数据到DataGridView中。

3. 配置列:可以设置每一列的名称、宽度、颜色等属性。

4. 对DataGridView进行一些基本的样式调整,比如添加边框、更换背景颜色等。

四、DataGridView控件的高级用法除了基本的展示功能外,DataGridView控件还支持一些高级用法,比如:1. 数据编辑:可以在DataGridView中实现对数据的增删改操作,通过单元格的编辑功能实现数据的实时更新。

2. 数据筛选:可以根据条件对数据进行筛选,实现灵活的数据展示。

3. 数据导出:可以将DataGridView中的数据导出为Excel表格或者其他格式的文件。

4. 事件处理:可以通过DataGridView的事件来监听用户的操作,比如单元格的点击、双击等操作。

五、DataGridView控件的注意事项在使用DataGridView控件时需要注意一些问题,比如:1. 对数据源的操作需要小心,避免出现数据同步问题。

2. 对于大量数据的展示,需要注意性能优化,避免出现卡顿现象。

c#winform中,对DataGridView数据进行操作,一次性保存

c#winform中,对DataGridView数据进行操作,一次性保存

c#winform中,对DataGridView数据进行操作,一次性保存需求:不能每加一条数据就操作数据库,要完成所有的数据加入界面,点击保存时才一次性保存。

加载数据时,数据源上可以有数据,并可以在界面上对数据进行增加、修改、删除。

所有操作,在点击保存时,准确地将所需要的操作结果反应到数据库中。

解决思路:先在程序中判断哪些数据要增加到数据库,哪些数据要对数据库中数据进行修改,哪些数据要进行删除。

再循环操作数据库。

#region 一次性判断并获取DataGridViewRow数据的操作情况/// <summary>/// 一次性判断并获取DataGridViewRow数据的操作情况/// </summary>/// <param name="dt">初始化DataGridView时绑定的数据源</param>/// <param name="DataGridViewRows">修改后的DataGridView.Rows</param>/// <param name="UniColumn">记录的唯一标识,可以是主键。

能保证唯一的属性就行</param>/// <returns> 返回值为Dictionary《object, int》,value值:1为新增,2为修改,3为删除,4 什么也不做</returns> public static IDictionary<object, int> GetCompareDataGridViewRows(DataTable dt, DataGridViewRowCollection DataGridViewRows, string UniColumn){IDictionary<object, int> dictlist = new Dictionary<object, int>();List<string> listOperated = new List<string>();int OperateType = -1;if (DataGridViewRows.Count > 0){for (int i = 0; i < DataGridViewRows.Count; i++){OperateType=OperateModel(dt, DataGridViewRows[i], UniColumn);if (OperateType == 1 || OperateType == 2)//添加或修改的{dictlist.Add(DataGridViewRows[i], OperateType);}listOperated.Add(DataGridViewRows[i].Cells[UniColumn].Val ue.ToString());}}for (int j = 0; j < dt.Rows.Count; j++){if (!listOperated.Contains(dt.Rows[j][UniColumn].T oString())) {dictlist.Add(dt.Rows[j][UniColumn], 3); //要删除的}}return dictlist;/***************使用方法***********************IDictionary<object, int> dictlist = CommonFunctions.GetCompareDataGridViewRows(list,dataGridView.Rows, "contct_cd");foreach (var dt in dictlist){//定义model类,从DataGridViewRow中读取数据switch (dt.Value){case 1:DataGridViewRow row = (DataGridViewRow)dt.Key;//增加到数据库代码break;case 2:DataGridViewRow row = (DataGridViewRow )dt.Key;//修改到数据库的代码break;case 3:string primarykey=(string)dt.Key;//从数据库删除的代码break;}}***********************************************/}#endregion#region 判断需要操作的类型 OperateModel/// <summary>/// 判断需要操作的类型 1为新增,2为修改,4 什么也不做/// </summary>/// <param name="modelcmp"></param>/// <returns></returns>private static int OperateModel(DataTable dt, DataGridViewRow row, string UniColumn){if (dt.Rows.Count == 0) return 1;bool isExist = false; //是否存在bool isModified = false; //是否修改过for (int i = 0; i < dt.Rows.Count; i++) //遍历list数据,一个一个判断{DataRow CurrentRow = dt.Rows[i]; //当前行if (CurrentRow[UniColumn].ToString() == row.Cells[UniColumn].Value.ToString()) //如果唯一标识相同{for (int j = 0; j < dt.Columns.Count; j++){string columnName = dt.Columns[j].ColumnName;if (CurrentRow[columnName].ToString() != row.Cells[columnName].Value.T oString()){isModified = true; break;}}isExist = true;break;}}if (isExist && isModified){return 2;}else if (!isExist){return 1;}else return 4;}#endregion提示:使用对比的不能是数据源,只有另外定义一个DataTable dtCopy=dt.Copy(); 不去操作dtCopy,对dt操作才不能影响到副本dtCopy,直接等于是不可以的。

C#datagridview和excel数据的相互导入方法

C#datagridview和excel数据的相互导入方法

using System;using System.Data;using System.Data.OleDb;using System.IO;using System.Windows.Forms;using GemBox.ExcelLite;namespace WindowsFormsApplication5{public partial class Form1 : Form{public System.Data.DataTable biao = new System.Data.DataTable();public DataView dv = new DataView();public System.Data.DataTable temp = new System.Data.DataTable();public Form1(){InitializeComponent();shuchu();dataGridView1.DataSource = biao;//将表biao中的数据传递给datagridview显示。

this.dataGridView1.Columns["编号"].Frozen = true;}public void shuchu(){//System.Data.OleDb.OleDbConnection objConn = newSystem.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=excell.xls;Extended Properties=Excel 8.0;");System.Data.OleDb.OleDbConnection objConn = newSystem.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=..\excell.xls;Extended Properties=Excel 8.0;");DataSet ds = new DataSet();string TJ = "SELECT * FROM [myRange1$]";OleDbDataAdapter da = new OleDbDataAdapter(TJ, objConn);try{da.Fill(ds);}catch (Exception ex){MessageBox.Show(ex.Message);objConn.Close();return;}biao = ds.Tables[0];//将excel表中的数据读入到内存表biao中,以备后用。

数据控件DataGridView添加、删除和修改数据库中的内容

数据控件DataGridView添加、删除和修改数据库中的内容

数据控件DataGridView添加、删除和修改数据库中的内容作者:天涯来源:中国自学编程网发布日期:1214063638介绍一个数据控件DataGridView,它是 3.5中新增加的的重要控件。

它是一种网格形式的控件,能以表格的形式显示数据,它的优势是能多行显示数据,在数据库的操作中会经常用到。

(1)打开VS2008,在D:\C#\ch14目录下建立名为DataGridViewTest的Windows应用程序,打开工程,为当前窗体添加控件,如表14-2所示。

表14-2 添加控件列表控件名NameTextDataGridViewdataGridView1ButtonbtnRef更新设置ButtonbtnDelete删除(2)接下来需要设置DadaAdapter和DataSet,方法同上一节一样。

选中DataGridView的DataSource属性。

(3)单击“下一步”按钮,选择“数据连接”图标。

(4)最后一步需要选择数据库对象,本例是要操作StudentInf数据库中的表,所以选择“表”复选框。

(5)设置完毕后,整个程序界面就设置完了。

程序界面设计完毕后,接下来要做的工作就是通过修改dataGridView1中的数据来更新数据库中的内容。

它实现的原理很简单,通过studentInfDataSet把dataGridView1绑定到Class1表,studentInfDataSet处于中间位置,所以在dataGridView1中修改的数据必须要传递到studentInfDataSet后才能改变数据库中的内容。

(1)双击“更新设置”按钮,添加如下代码。

this.sqlDataAdapter1.Update(this.studentInfDataSet);该代码的功能是调用sqlDataAdapter1的Update()方法实现对studentInfDataSet的更新。

(2)按F5键,程序运行以后,对dataGridView1添加一行新的数据,然后单击“更新设置”按钮,完成后关闭程序再打开。

DataGridView同步更新到数据库

DataGridView同步更新到数据库

DataGridView同步更新到数据库一。

绑定数据SqlConnection con = null; SqlDataAdapter sa = null; SqlCommandBuilder sb = null; DataTable dt = null; BindingSource bs = null; 窗体时绑定数据private void DataBingding_Load(object sender, EventArgs e) { con = newSqlConnection("server=.;uid=sa;pwd=sa;database=pubs;"); try { con.Open(); sa = new SqlDataAdapter("select * from jobs", con); sb = new SqlCommandBuilder(sa);//绑定SqlDataAdapter dt = new DataTable(); sa.Fill(dt);this.dataGridView1.DataSource = dt; bs = new BindingSource(); bs.DataSource = dt;//绑定BindingSource con.Close(); } catch (Exception ex) { con.Close(); throw ex; } } SqlConnection con = null; SqlDataAdapter sa = null; SqlCommandBuilder sb = null; DataTable dt = null; BindingSource bs = null; //加载窗体时绑定数据private void DataBingding_Load(object sender, EventArgs e) { con = newSqlConnection("server=.;uid=sa;pwd=sa;database=pubs;"); try { con.Open(); sa = new SqlDataAdapter("select * from jobs", con); sb = new SqlCommandBuilder(sa);//绑定SqlDataAdapter dt = new DataTable(); sa.Fill(dt);this.dataGridView1.DataSource = dt; bs = new BindingSource(); bs.DataSource = dt;//绑定BindingSource con.Close(); } catch (Exception ex) { con.Close(); throw ex; } }二.同步DataGridView数据到数据库&lt;PRE class=csharp name="code"&gt;//更新按钮单击事件private void button1_Click(object sender, EventArgs e) { sa.Update((DataTable)bs.DataSource); }&lt;/PRE&gt;。

DataGridView中数据存入数据库方法

DataGridView中数据存入数据库方法

DataGridView中数据存入数据库方法DataGridView做了新的数据显示控件加入到了.Net 05中,其强大的编辑能力让其成为了数据显示中必不可少的控件。

目前对于DataGridView中的更新讲的挺多的,但直接的插入数据好像讲的不是太多,下面就以我的例子说明一下。

1、首先新建一个项目。

2、建立一个数据库连接类LinkDataBase。

因为数据库操作有很多都是重复性工作,所以我们写一个类来简化对数据库的操作。

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Data.Sql;namespace Test{class LinkDataBase{//设置连接字符串private string strSQL;//与数据库连接private string connectionString = "Data Source=Localhost;Initial Catalog=Test;Integr ated Security=True";private SqlConnection myConnection;private SqlCommandBuilder sqlCmdBld;private DataSet ds = new DataSet();private SqlDataAdapter da;public LinkDataBase(){}//根据输入的SQL语句检索数据库数据public DataSet SelectDataBase(string tempStrSQL, string tempTableName) {this.strSQL = tempStrSQL;this.myConnection = new SqlConnection(connectionString);this.da = new SqlDataAdapter(this.strSQL, this.myConnection);this.ds.Clear();this.da.Fill(ds, tempStrSQL);//返回填充了数据的DataSet,其中数据表以tempTableName给出的字符串命名return ds;}//数据库数据更新(传DataSet和DataTable的对象)public DataSet UpdateDataBase(DataSet changedDataSet, string tableName) {this.myConnection = new SqlConnection(connectionString);this.da = new SqlDataAdapter(this.strSQL, this.myConnection);this.sqlCmdBld = new SqlCommandBuilder(da);this.da.Update(changedDataSet, tableName);//返回更新过的数据库表return changedDataSet;}//检索数据库数据(传字符串,直接操作数据库)public DataTable SelectDataBase(string tempStrSQL){this.myConnection = new SqlConnection(connectionString);DataSet tempDataSet = new DataSet();this.da = new SqlDataAdapter(tempStrSQL, this.myConnection);this.da.Fill(tempDataSet);return tempDataSet.Tables[0];}//数据库数据更新(传字符串,直接操作数据库)public int UpdateDataBase(string tempStrSQL){this.myConnection = new SqlConnection(connectionString);myConnection.Open();SqlCommand tempSqlcommand = new SqlCommand(tempStrSQL, this.myConnecti on);int intNumber = tempSqlcommand.ExecuteNonQuery();myConnection.Close();return intNumber;}}}上面这段代码很容易理解。

c#将Excel导入到DataGridview并插入到数据库

c#将Excel导入到DataGridview并插入到数据库

using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;using System.Data.Sql;using Microsoft.Office.Interop.Excel;//创建人内江师范学院牟鹏,2014-12,excel导入功能的实现namespace WindowsFormsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btn_close_Click(object sender, EventArgs e){this.Close();}///<summary>///数据库插入数据操作///</summary>///<param name="username">用户名</param>///<param name="pwd">密码</param>///<param name="remark">备注</param>///<returns>true表示插入成功,false表示插入失败</returns>public static bool DataCon(string username,string pwd,string remark){//数据库连接字符串string sqlCon = "Server=192.168.1.19;database=InDataOfExcel;Uid=sa;pwd=123;";using (SqlConnection con = new SqlConnection(sqlCon)){//判断数据库连接状态if (con.State != ConnectionState.Open){con.Close();con.Open();}SqlCommand cmd = con.CreateCommand();//数据操作字符串string sqlText = "insert into userCon(username,pwd,remark)values('"+username+"','"+pwd+"','"+remark+"')";mandText = sqlText;//返回受影响的行数大于0表示插入成功if (cmd.ExecuteNonQuery() > 0){return true;}else{return false;}}}///<summary>///导入Excel///</summary>///<param name="gridView">dataGridView控件名</param>///<param name="filename">路径名</param>public static void ReadingExcel(DataGridView gridView, string fileName){Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();Workbook book = app.Workbooks.Open(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);Worksheet sheet = book.Worksheets[1] as Worksheet;gridView.Rows.Clear();gridView.Columns.Clear();//添加每一列的列标题for (int i = 1; ; i++){string value = (sheet.Cells[1, i] asRange).Text.ToString();//获得每列第一行数据。

DataGridView控件添加数据

DataGridView控件添加数据

DataGridView控件添加数据在Winform中向DataGridView控件添加数据很常用到,现总结3种填充DataGridView方法:1.利用SqlDataAdapter对象向DataGridView中添加数据关键代码:(可以将该代码放到窗体加载事件的方法中)using (SqlDataAdapter da = new SqlDataAdapter("select * from Product", DBService.Conn)){DataSet ds = new DataSet();da.Fill(ds);this.dataGridView1.DataSource = ds.T ables[0];}2. 利用SqlDataReader填充DataGridView关键代码://使用SqlDataReader填充DataGridViewusing (SqlCommand command = new SqlCommand("select * from product", DBService.Conn)){SqlDataReader dr = command.ExecuteReader();BindingSource bs = new BindingSource();bs.DataSource = dr;this.dataGridView1.DataSource = bs;}备注:在很多情况下,BindingSource对象起到一个过渡的作用,因为SqlDataReader对象直接赋给DataGridView时,不能正常显示数据,所以利用BindingSource对象做一个绑定。

3.利用泛型集合向DataGridView中添加数据关键代码:(List<>泛型集合)private void Form1_Load(object sender, EventArgs e){//使用List<>泛型集合填充DataGridViewList students = new List();Student hat = new Student("Hathaway", "12", "Male");Student peter = new Student("Peter","14","Male");Student dell = new Student("Dell","16","Male");Student anne = new Student("Anne","19","Female");students.Add(hat);students.Add(peter);students.Add(dell);students.Add(anne);this.dataGridView1.DataSource = students;}关键代码:(Dictionary<>泛型集合,与List<>泛型集合略有不同)private void Form1_Load(object sender, EventArgs e){//使用Dictionary<>泛型集合填充DataGridViewDictionary students = new Dictionary();Student hat = new Student("Hathaway", "12", "Male");Student peter = new Student("Peter","14","Male");Student dell = new Student("Dell","16","Male");Student anne = new Student("Anne","19","Female");students.Add(hat.StuName,hat);students.Add(peter.StuName,peter);students.Add(dell.StuName,dell);students.Add(anne.StuName,anne);//在这里必须创建一个BindIngSource对象,用该对象接收Dictionary<>泛型集合的对象BindingSource bs = new BindingSource();//将泛型集合对象的值赋给BindingSourc对象的数据源bs.DataSource = students.Values;this.dataGridView1.DataSource = bs;}。

使用DataGridView进行增删改查,并同步到数据库

使用DataGridView进行增删改查,并同步到数据库

使用DataGridView进行增删改查,并同步到数据库DataGridView控件具有极高的可配置性和可扩展性。

它提供有大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。

下面通过一个小例子来展示DataGridView进行增删改查,并同步到数据库的功能。

窗体展示:用户需求:1.当窗体显示时,将数据库中用户表中的数据显示出来。

2.选中一行,执行删除操作,同时在数据库中相应数据被删除。

3.双击某个数据,进行编辑,或者在空白行添加新的数据,然后点击更新,数据库随之更新。

代码展示:[vb] view plaincopyPublic Class Form1'代码较简单,没有使用三层架构。

Public DT As DataTable Public SDA As SqlDataAdapter Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadDim conn = NewSqlConnection("Server=***;DataBase=userinfo;UserID=***;Password=***") SDA = New SqlDataAdapter("select * from Users", conn) DT = New DataTable SDA.Fill(DT) '将查到的数据传到DataTable中DataGridView1.DataSource = DT '将DataTable中的数据传给DataGridView1显示End Sub '更新操作Private SubbtnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click Dim SCB = New SqlCommandBuilder(SDA) SDA.Update(DT) MsgBox("更新成功") End Sub '删除操作Private Sub btnDel_Click(sender As Object, e As EventArgs) Handles btnDel.Click '删除选中行DataGridView1.Rows.RemoveAt(DataGridView1.CurrentCell. RowIndex) '数据库中进行删除Dim SCB = New SqlCommandBuilder(SDA)SDA.Update(DT) MsgBox("删除成功")End Sub End Class注意:1.数据库中相应的表中一定要有主键。

关于C# -WINFORM-DataGridView的更新、删除

关于C# -WINFORM-DataGridView的更新、删除

关于C# -WINFORM-DataGridView的更新、删除一、DataGridView绑定数据库之后直接对其进行操作:1.在按钮添加更新操作代码(只需一行):this.tbTableAdapter.Update(this.abcDataSet2.tb);其中abc为数据库名,tb为表名2.在按钮添加删除操作代码:DialogResult dlResult = MessageBox.Show(this, "要删除这些记录吗?", "请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1,MessageBoxOptions.RightAlign);if (dlResult == DialogResult.Yes){int j = dataGridView1.SelectedRows.Count;int[] l = new int[j];int i;for (i = 0; i < j; i++){l[i] = dataGridView1.SelectedRows[i].Index;}int k = 0;while (k < j){this.abcDataSet2.tb.Rows[l[k]].Delete();k++;}二、DataGridView绑定数据库,把查询结果进行更新、删除操作后保存到数据库:1.在按钮添加更新操作代码:if (MessageBox.Show("确实要修改数据库吗?", "决策提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) ==DialogResult.OK){DataTable dt = dataGridView1.DataSource as DataTable; if (dt != null){try{using (SqlConnection con = newSqlConnection("data source=ksig;initial catalog=AMDMS;userid=sa;pwd=123;")){SqlDataAdapter da = newSqlDataAdapter("select * from account", con);SqlCommandBuilder scb = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds, "account");da.Update(dt);}}catch (DataException de){//}}MessageBox.Show("成功修改数据库!", "恭喜");}else{MessageBox.Show("放弃修改数据库!", "系统提示");}2.在按钮添加删除操作代码://在DataGridView1界面上进行可视化删除dataGridView1.Rows.Remove(dataGridView1.Rows[dataGridView 1.CurrentCell.RowIndex]);//把删除后的DataGridView1的结果更新到数据库中DataTable dt = dataGridView1.DataSource as DataTable;if (dt != null){try{using (SqlConnection con = new SqlConnection("datasource=ksig;initial catalog=AMDMS;user id=sa;pwd=123;")){SqlDataAdapter da = new SqlDataAdapter("select * from account", con);SqlCommandBuilder scb = new SqlCommandBuilder(da);DataSet ds = new DataSet();da.Fill(ds, "account");da.Update(dt);}}catch (DataException de){//}}。

C#--将Excel数据导入DataGridView,再把DataGridView导入Sq。。。

C#--将Excel数据导入DataGridView,再把DataGridView导入Sq。。。

C#--将Excel数据导⼊DataGridView,再把DataGridView导⼊Sq。

以下是学习笔记:⼀,实现效果:1,原始的Excel数据:2,点击“从外部Excel⽂件导⼊数据”。

把上⾯的Excel⽂件导⼊UI显⽰3,点击“保存到数据库” ⼜可以把UI的数据保存在SqlServer数据库4,分析实现以上功能的思路⼀,编写⼀个能够读取Excel的通⽤数据访问类OleDbHelperOleDbHelper代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.OleDb;namespace DAL.Helper{class OleDbHelper{//适合Excel2003版本// private static string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0";//适合Excel2007以后的版本private static string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0";/// <summary>/// 执⾏增、删、改(insert/update/delete)/// </summary>/// <param name="sql"></param>/// <returns></returns>public static int Update(string sql){OleDbConnection conn = new OleDbConnection(connString);OleDbCommand cmd = new OleDbCommand(sql, conn);try{conn.Open();int result = cmd.ExecuteNonQuery();return result;}catch (Exception ex){//写⼊⽇志。

保存MSHFlexGrid表格中的数据到数据库

保存MSHFlexGrid表格中的数据到数据库

保存MSHFlexGrid表格中的数据到数据库'保存表格中的数据到数据库Dim CN As ADODB.ConnectionSet CN = New ADODB.ConnectionCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data\ManInfo.mdb"With Me.MSHFlexGrid1Dim m As IntegerDim N As IntegerFor m = 1 To .Rows - 1If .TextMatrix(m, 1) = "" Then Exit For '以第一个字段为关健字。

CN.Execute "INSERT INTO 996 values('" & .TextMatrix(m, 1) & "','" & .TextMatrix(m, 2) & "','" & .TextMatrix(m, 3) & "','" & .TextMatrix(m, 4) & "','" & .TextMatrix(m, 5) & "','" & .TextMatrix(m, 6) & "','" & .TextMatrix(m, 7) & "','" & .TextMatrix(m, 8) & "','" & .TextMatrix(m, 9) & "','" & .TextMatrix(m, 10) & "','" & .TextMatrix(m, 11) & "','" & .TextMatrix(m, 12) & "','" & .TextMatrix(m, 13) & "','" & .TextMatrix(m, 14) & "','" & .TextMatrix(m, 15) & "','" & .TextMatrix(m, 16) & "') "Next mEnd WithSet CN = Nothing注意:INSERT INTO 表(字段) values(值),前后()内字段数目和值数目必须相等。

C#将DataGridView中的数据保存到CSV和Excel中

C#将DataGridView中的数据保存到CSV和Excel中

C#将DataGridView中的数据保存到CSV和Excel中⼀、保存到CSVpublic static bool dataGridViewToCSV(DataGridView dataGridView){if (dataGridView.Rows.Count == 0){MessageBox.Show("没有数据可导出!", "提⽰", MessageBoxButtons.OK, rmation);return false;}SaveFileDialog saveFileDialog = new SaveFileDialog();saveFileDialog.Filter = "CSV files (*.csv)|*.csv";saveFileDialog.FilterIndex = 0;saveFileDialog.RestoreDirectory = true;saveFileDialog.CreatePrompt = true;saveFileDialog.FileName = null;saveFileDialog.Title = "保存";if (saveFileDialog.ShowDialog() == DialogResult.OK){Stream stream = saveFileDialog.OpenFile();StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.GetEncoding(-0));string strLine = "";try{//表头for (int i = 0; i < dataGridView.ColumnCount; i++){if (i > 0)strLine += ",";strLine += dataGridView.Columns[i].HeaderText;}strLine.Remove(strLine.Length - 1);sw.WriteLine(strLine);strLine = "";//表的内容for (int j = 0; j < dataGridView.Rows.Count; j++){strLine = "";int colCount = dataGridView.Columns.Count;for (int k = 0; k < colCount; k++){if (k > 0 && k < colCount)strLine += ",";if (dataGridView.Rows[j].Cells[k].Value == null)strLine += "";else{string cell = dataGridView.Rows[j].Cells[k].Value.ToString().Trim();//防⽌⾥⾯含有特殊符号cell = cell.Replace("\"", "\"\"");//cell = "\"" + cell + "\""; //每个元素值⽤引号包括strLine += cell;}}sw.WriteLine(strLine);}sw.Close();stream.Close();MessageBox.Show("数据被导出到:" + saveFileDialog.FileName.ToString(), "导出完毕", MessageBoxButtons.OK, rmation); }catch (Exception ex){MessageBox.Show(ex.Message, "导出错误", MessageBoxButtons.OK, rmation);return false;}}return true;}⼆、保存到Excelpublic static bool dataGridViewToExcel(DataGridView dataGridView){if (dataGridView.Rows.Count == 0){MessageBox.Show("没有数据可导出!", "提⽰", MessageBoxButtons.OK, rmation);return false;}string fileName = "";string saveFileName = "";SaveFileDialog saveDialog = new SaveFileDialog();saveDialog.DefaultExt = "xlsx";saveDialog.Filter = "Excel⽂件|*.xlsx";saveDialog.FileName = fileName;saveDialog.ShowDialog();saveFileName = saveDialog.FileName;if (saveFileName.IndexOf(":") < 0)return false; //被点了取消Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();if (xlApp == null){MessageBox.Show("⽆法创建Excel对象,您的电脑可能未安装Excel");return false;}Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;Microsoft.Office.Interop.Excel.Workbook workbook =workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);Microsoft.Office.Interop.Excel.Worksheet worksheet =(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1//写⼊标题for (int i = 0; i < dataGridView.ColumnCount; i++){ worksheet.Cells[1, i + 1] = dataGridView.Columns[i].HeaderText; }//写⼊数值for (int r = 0; r < dataGridView.Rows.Count; r++){for (int i = 0; i < dataGridView.ColumnCount; i++){worksheet.Cells[r + 2, i + 1] = dataGridView.Rows[r].Cells[i].Value;}System.Windows.Forms.Application.DoEvents();}worksheet.Columns.EntireColumn.AutoFit();//列宽⾃适应MessageBox.Show(fileName + "资料保存成功", "提⽰", MessageBoxButtons.OK);if (saveFileName != ""){try{workbook.Saved = true;workbook.SaveCopyAs(saveFileName); //fileSaved = true;}catch (Exception ex){//fileSaved = false;MessageBox.Show("导出⽂件时出错,⽂件可能正被打开!\n" + ex.Message);}}xlApp.Quit();Kill(xlApp);GC.Collect();//强⾏销毁return true;}到此这篇关于C#将DataGridView数据保存CSV和Excel的⽂章就介绍到这了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DataGridView做了新的数据显示控件加入到了.Net 05中,其强大的编辑能力让其成为了数据显示中必不可少的控件。

目前对于DataGridView中的更新讲的挺多的,但直接的插入数据好像讲的不是太多,下面就以我的例子说明一下。

1、首先新建一个项目。

2、建立一个数据库连接类LinkDataBase。

因为数据库操作有很多都是重复性工作,所以我们写一个类来简化对数据库的操作。

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Data.Sql;namespace Test...{class LinkDataBase...{//设置连接字符串private string strSQL;//与数据库连接private string connectionString = "Data Source=Localhost;Initial Catalog=Test;Integr ated Security=True";private SqlConnection myConnection;private SqlCommandBuilder sqlCmdBld;private DataSet ds = new DataSet();private SqlDataAdapter da;public LinkDataBase()...{}//根据输入的SQL语句检索数据库数据public DataSet SelectDataBase(string tempStrSQL, string tempTableName)...{this.strSQL = tempStrSQL;this.myConnection = new SqlConnection(connectionString);this.da = new SqlDataAdapter(this.strSQL, this.myConnection);this.ds.Clear();this.da.Fill(ds, tempStrSQL);//返回填充了数据的DataSet,其中数据表以tempTableName给出的字符串命名return ds;}//数据库数据更新(传DataSet和DataTable的对象)public DataSet UpdateDataBase(DataSet changedDataSet, string tableName)...{this.myConnection = new SqlConnection(connectionString);this.da = new SqlDataAdapter(this.strSQL, this.myConnection);this.sqlCmdBld = new SqlCommandBuilder(da);this.da.Update(changedDataSet, tableName);//返回更新过的数据库表return changedDataSet;}//检索数据库数据(传字符串,直接操作数据库)public DataTable SelectDataBase(string tempStrSQL)...{this.myConnection = new SqlConnection(connectionString);DataSet tempDataSet = new DataSet();this.da = new SqlDataAdapter(tempStrSQL, this.myConnection);this.da.Fill(tempDataSet);return tempDataSet.Tables[0];}//数据库数据更新(传字符串,直接操作数据库)public int UpdateDataBase(string tempStrSQL)...{this.myConnection = new SqlConnection(connectionString);myConnection.Open();SqlCommand tempSqlcommand = new SqlCommand(tempStrSQL, this.myConnection);int intNumber = tempSqlcommand.ExecuteNonQuery();myConnection.Close();return intNumber;}}}上面这段代码很容易理解。

大大的简化了我们的操作。

2、建立一个DataGridView控件,将其命名。

(我这里把他命名成:dgv_type)。

再加入一个Combobox控件来实现定位到某格时出现下拉列表框。

其实DataGridView具有DataGridViewCombobxColumn属性,但这样做出来的下拉框不如绑定一个Combobox控件美。

3、下面进行代码绑定将数据表Sex中的Sex字段传给Combobox做为Item使用。

public void BindType()...{string tempStrSQL = "select Sex from Sex";tempDataTable = link.SelectDataBase(tempStrSQL);for (int i = 0; i < tempDataTable.Rows.Count; i++)...{//将Sex中性别字段传给Comboboxthis.cmb_sex.Items.Add(tempDataTable.Rows[i][0]);}}4、建立DataGridView的CurrentCellChanged事件,产生当焦点进入某单元格内出现Combobox的效果private void dgv_type_CurrentCellChanged(object sender, EventArgs e)...{if (this.dgv_type.CurrentCell.ColumnIndex == 2)...{Rectangle rect = dgv_type.GetCellDisplayRectangle(dgv_type.CurrentCell.Colu mnIndex, dgv_type.CurrentCell.RowIndex, false);cmb_sex.Left = rect.Left;cmb_sex.Top = rect.Top;cmb_sex.Width = rect.Width;cmb_sex.Height = rect.Width;cmb_sex.Visible = true;}Else...{cmb_sex.Visible = false;}}5、建立Combobox的SelectedIndexChanged事件,当改变时,将值传送给DataGridView 相应的单元格内。

记得啊,比较字符时一定要加上.Trim()去掉空格,当数据库中字段类型为nchar时后面会产生空格造成比较结果不同。

例如“男”和“男”可是不一样的啊>.<。

所以为了良好的习惯最好还是加上.Trim()。

private void cmb_sex_SelectedIndexChanged(object sender, EventArgs e)...{ if (((ComboBox)sender).Text.Trim() == "男")...{if (dgv_type.CurrentCell != null)...{dgv_type.CurrentCell.Value = "男";dgv_type.CurrentCell.Tag = "1";}}if (((ComboBox)sender).Text.Trim() == "女")...{if (dgv_type.CurrentCell != null)...{dgv_type.CurrentCell.Value = "女";dgv_type.CurrentCell.Tag = "2";}}}6、建立DataGridView的DataBindingComplete事件,用来显示单元格内的值private void dgv_type_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)...{for (int i = 0; i < this.dgv_type.Rows.Count; i++)...{if (dgv_type.Rows[i].Cells[1].Value != null && dgv_type.Rows[i].Cells[1].ColumnIndex == 1) ...{dgv_type.Rows[i].Cells[1].Tag = dgv_type.Rows[i].Cells[1].Value.ToString();if (dgv_type.Rows[i].Cells[1].Value.ToString() == "1")...{dgv_type.Rows[i].Cells[1].Value = "男";}else if (dgv_type.Rows[i].Cells[1].Value.ToString() == "2")...{dgv_type.Rows[i].Cells[1].Value = "女";}}}}7、最后把所有的事件放到Load中private void Form1_Load(object sender, EventArgs e)...{BindType();cmb_sex.SelectedIndexChanged += new EventHandler(cmb_sex_SelectedIndexChanged);this.dgv_type.Controls.Add(cmb_sex);}现在可以在表中输入数据了。

输入数据后呢,当然我们要把他们保存到数据库内。

8、建立一个Button控件来实现数据的保存。

其中使用了一个rowMax来记录DataGridView中输入数据的最大行号。

相关文档
最新文档