如何实现c# winform DataGridView添加一行,添加数据后,保存到数据库?

如何实现c# winform DataGridView添加一行,添加数据后,保存到数据库?,第1张

1、点击添加,实例化一个DataGridView的行对象DataRow 然后把这个对象添加到DataGridView中,你的DataGridView要是可编辑状态,然后编辑数据,点保存循环读取DataGridView的行数据,存到实体类中,在通过后台SQL保存到数据库

2、将datagridview于数据库中对应的表进行绑定,绑定完成之后直接在datagridview中进行添加就可以,自动在数据库中添加并保存。

3、创建一个表结构,每次新增的时候往表里面加一条记录,然后DataGridView再绑定表就可以了。保存的时候连接数据库+sql就完成了。

4、就是正常的添加就可以了啊。首先连接数据库 而后插入数据库的表。

5、gridview没有自带这种功能,只自带了,编辑删除(也可能是我不知道,我没用过直接可以添加一行新的)你可以模仿一个这样的功能,用js动态添加一行textbox,每个字段对应一个,你把数据添加后,点击保存,就ok了,当然你的动态添加的textbox要在gridview下面,样式要对齐,感觉上是gridview添加了一行。

1.建立与excel表的连接,获得工作表ObjWorkSheet,

using Microsoft.Office.Interop.Excel

Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application()

Workbook ObjWorkBook

Worksheet ObjWorkSheet = null

ObjWorkBook = ObjExcel.Workbooks.Open(sPathName, 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)

foreach (Microsoft.Office.Interop.Excel.Worksheet sheet in ObjWorkBook.Sheets){if (sheet.Name.ToLower() == sheetName.ToLower()){ObjWorkSheet = sheetbreak}}if (ObjWorkSheet == null)

throw new Exception(string.Format("{0} not found!!", sheetName))

2.得到单元格中的内容,注意i从1开始,j从1开始计,i==1时,对应字段名称所在的行

Range cell = (Range)ObjWorkSheet.Cells[i, j]

单元格的值为cell.value2

3.设置字段类型需要做一个交互界面,你先获得并显示字段名称,然后对其设置类型

4.由交互界面获得字段和字段类型,利用你的编程接口将excel的数据导入数据库

我的是用oracle数据库的,与你的接口不同,所以只能说这么多了.

C#插入多条数据到oracle数据库:

实例代码:

using System.Data

using System.Drawing

using System.Text

using System.Windows.Forms

using System.IO

using System.Data.OleDb

using System.Data

using System.Data.OracleClient

using System.Text

namespace ExportInfo

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent()

        }

        /// <summary>

        /// 打开对话框

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void button1_Click(object sender, EventArgs e)

        {

            openFileDialog1.Filter = "电子表格(*.xls)|*.xls"

            openFileDialog1.ShowDialog()//打开对话框

            this.textBox1.Text = openFileDialog1.FileName//得到文件=路径+名称

        }

        /// <summary>

        /// 点击导入文件到数据库中

        /// 代云超

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void button2_Click(object sender, EventArgs e)

        {

            try

            {

                DataSet ds = ImportExcel(this.textBox1.Text)//将excel的对象先放到ds 中

                if (ds != null)

                {

                    if (ds.Tables[0].Rows.Count > 0)//如果ds中是有值的话 执行下面的 *** 作

                    {

                        if (ExportInfo(ds))

                        {

                            MessageBox.Show("导入数据库成功!")

                        }

                        else

                        {

                            MessageBox.Show("导入数据库失败!")

                        }

                    }

                }

            }

            catch

            {

                MessageBox.Show("导入数据库失败 请检查导入文件是否填写正确!")

            }

        }

        /// <summary>

        /// 导入文件的具体方法

        /// 代云超

        /// </summary>

        /// <param name="file">要导入的文件</param>

        /// <returns></returns>

        public static DataSet ImportExcel(string file)

        {

            FileInfo fileInfo = new FileInfo(file)

            if (!fileInfo.Exists) return null string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0Data Source=" + file + "Extended Properties='Excel 8.0HDR=NOIMEX=1'"

            OleDbConnection objConn = new OleDbConnection(strConn)

            DataSet dsExcel = new DataSet()

            try

            {

                objConn.Open()

                string strSql = "select * from [Sheet1$]"

                OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn)

                odbcExcelDataAdapter.Fill(dsExcel) return dsExcel

            }

            catch (Exception ex)

            {

                throw ex

            }

        }

        /// <summary>

        /// 这是将ds对象导入数据库的方法

        /// 代云超

        /// </summary>

        /// <returns>执行是否成功 如: 成功=true 失败=false</returns>

        public static bool ExportInfo(DataSet ds)

        {

            if (ds != null)

            {

                if (ds.Tables[0].Rows.Count > 0)//如果ds中是有值的话 执行下面的 *** 作

                {

                    return Do(ds)//执行成功

                }

            }

            return false//执行失败

        }

        public static bool Do(DataSet ds)

        {

            OracleConnection conNorthwind = new OracleConnection("Data Source=web1User Id=UserNamePassword=UserPasswordIntegrated Security=no")//链接字符串

            OracleCommand commandNorthwind = new OracleCommand()

            try

            {

                conNorthwind.Open()//打开数据库链接

                OracleTransaction tranNorthwind = conNorthwind.BeginTransaction()//开始事务

                for (int i = 0 i < ds.Tables[0].Rows.Count i++)

                {

                    DataRow dr = ds.Tables[0].Rows[i]

                    OracleParameter[] parameters = null//为了得到插入数据库的参数 定义参数对象 为空

                    string sql = GetSqlString(dr, out parameters)//执行sql -->用out关键字得到参数 赋到parameters对象上

                    //插入数据库中

                    PrepareCommand(commandNorthwind, conNorthwind, tranNorthwind, sql, parameters)

                    commandNorthwind.ExecuteNonQuery()//执行 *** 作

                }

                commandNorthwind.Transaction.Commit()//提交事务

                conNorthwind.Close()//关闭数据库链接资源

                return true

            }

            catch//如果有异常 不一定要捕捉异常 但要rollback事务

            {

                if (commandNorthwind.Transaction != null && conNorthwind != null)

                {

                    commandNorthwind.Transaction.Rollback()//rollback事务

                    conNorthwind.Close()//关闭数据库链接

                }

                return false

            }

        }

        /// <summary>

        /// 每一行信息插入数据库中

        /// </summary>

        /// <param name="dr">要插入的这一行ds-datarow对象</param>

        /// <returns>sql语句和用out关键字的参数数组对象</returns>

        public static string GetSqlString(DataRow dr, out OracleParameter[] parameters)

        {

            StringBuilder sb = new StringBuilder()

            sb.Append("INSERT INTO TEXT VALUES(:ID,:NAME)")

            parameters = new OracleParameter[] { new OracleParameter(":ID", Convert.ToString(dr[0])), new OracleParameter(":NAME", Convert.ToString(dr[1])) }

            return sb.ToString()//将sqlreturn出去

        }

        private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms)

        {

            PrepareCommand(cmd, conn, trans, cmdText, CommandType.Text, cmdParms)

        }

        //参数设定  此方法被重载 

        private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, CommandType cmdType, OracleParameter[] cmdParms)

        {

            if (conn.State != ConnectionState.Open)

            {

                conn.Open()

            }

            cmd.Connection = conn

            cmd.CommandText = cmdText

            if (trans != null)

            {

                cmd.Transaction = trans

            }

            cmd.CommandType = cmdType  // CommandType.Text//cmdType

            if (cmdParms != null)

            {

                foreach (OracleParameter parameter in cmdParms)

                {

                    if (parameter != null)

                    {

                        if (parameter.Value == null)

                        {

                            parameter.Value = DBNull.Value

                        }

                        cmd.Parameters.Add(parameter)

                    }

                }

            }

        }

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9420526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存