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)
}
}
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)