首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

这个有关问题不简单吧

2012-02-17 
这个问题不简单吧!现在有个页面,功能是将excel文件导入到SQL数据库的,页面上有1个dropdownlist、1个input(f

这个问题不简单吧!
现在有个页面,功能是将excel文件导入到SQL数据库的,页面上有1个dropdownlist、1个input(file)和一个导入button,还有一个gridview
在导入的时候,有excel文件中的数据有可能于SQL表中的主键重复的,则不将此项导入到SQL。
问题,我想将excel文件中与SQL主键重复的数据现在是在gridview中.因为关系到好几个表,所以我想gridview的内容只能由CS代码进行操作。
例如:dropdownlist选择了student表
          excel文件里有:
          name       sex       age       class
          小明         男         18           5班
          小红         女         18           4班
          小黄         男         19           3班
  SQL的student表里有:     (name是主键)
          name       sex       age       class
          小红         女         19           5班

我要将:   name       sex       age       class           ←此数据为excel里的
                小红         女         18           4班
显示在gridview中。。
我里面判断重复的代码  
strSql   =   "select   *   from   rsm_upsoscreen   where   roomid= ' "   +   myDs.Tables[0].Rows[i].ItemArray[0].ToString()   +   " 'and   outscreenid= ' "   +   myDs.Tables[0].Rows[i].ItemArray[1].ToString()   +   " ' ";
                                                        SqlDataAdapter   myAda   =   new   SqlDataAdapter(strSql,   mySqlConn);
                                                        myAda.Fill(myDs,   "Temp ");
                                                        if   (myAda.Fill(myDs,   "Temp ")   !=   0)
                                                        {//将此记录加到DateSet里,我不会写。。
                                                        }
                    后面将如何将DateSet里的内容显示到gridview里呢

[解决办法]
//Excel文件的连接
    string excelConnectionString = "Provider = Microsoft.Jet.OleDb.4.0; Data Source = " + Excel文件路径 + " ; Extended Properties=Excel 8.0; ";
OleDbConnection excelConn = new OleDbConnection(excelConnectionString);
excelConn.Open();
OleDbCommand excelCmd = new OleDbCommand( "SELECT * FROM [Sheet1$] ", excelConn);

    //数据库的连接


string accessConnectionString = "Provider = Microsoft.Jet.OleDb.4.0; Data Source = " + 数据库路径;
OleDbConnection accessConn = new OleDbConnection(accessConnectionString);
accessConn.Open();
OleDbTransaction trans = accessConn.BeginTransaction();


string sql = "INSERT INTO [表] (字段) VALUES ( '{0} ', ...) ";

try
{
using (OleDbDataReader excelDr = excelCmd.ExecuteReader())
{
while (excelDr.Read())
{
OleDbCommand accessCmd = new OleDbCommand(string.Format(sql, System.Convert.ToString(excelDr[0])), accessConn);
accessCmd.Transaction = trans;
accessCmd.ExecuteNonQuery();

}
}
//添加成功,提交事务
trans.Commit();
}
catch (Exception ex)
{
//添加失败,回滚事务
trans.Rollback();
}
finally
{
//关闭数据库连接
excelConn.Close();
accessConn.Close();
}

热点排行