c#导入excel入sql server数据库,但是只保留6个月的数据。

我需要将工资表导入到数据库表中,但是有个要求是数据表中只保留6个月的数据。excel最后一列有个年、月,如果我把16.7月的数据导入进去,那么就要挤掉16.1月及之前月份... 我需要将工资表导入到数据库表中,但是有个要求是数据表中只保留6个月的数据。excel最后一列有个年、月,如果我把16.7月的数据导入进去,那么就要挤掉16.1月及之前月份的数据。只保留16.2月至16.7月的数据。请问这个该怎么做?是在数据库中实现还是在c#程序中呢?我是新手,求教具体的方法,最好是要有代码或者例子,谢谢! 展开
 我来答
Winangel
2016-07-12 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:56.6万
展开全部

需要存储过程(删除部分)和C#共同使用,C#负责写入 及调用删除的存储过程

DataTable ExcelTable;
DataSet ds = new DataSet();
OleDbConnection objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 你的excel文件路径 + ";" + "Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;\""); //创建与Excel 的 oledb 连接
objConn.Open();
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
string tableName = schemaTable.Rows[0][2].ToString().Trim();//获取 Excel 的表名,默认值是sheet1
string strSql = "select * from [" + tableName + "]";
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
myData.Fill(ds, tableName);//填充数据
objConn.Close();
ExcelTable = ds.Tables[tableName]; //生成datatale
int row = ExcelTable.Rows.Count;
int column = ExcelTable.Columns.Count;
string err = "Passed";
for (int i = 1; i < row; i++)
{  // 逐行执行插入命令
   string sql = "insert into tabel_name values(";
   for (int j = 0; j < 4; j++)  // 拼装SQL命令
       {
            string InsVu=chk_data(ExcelTable.Rows[i][j].ToString().Trim());
            sql = sql + "'" + InsVu + "',";
       }
       try
       {
          sql = sql + "'')"; //以下链接数据库并
          string strCon = "Data Source=数据库SID;user=XXXX;password=XXXXXX;Unicode=True;Omit Oracle Connection Name=True;";
          OracleConnection conn = new OracleConnection(strCon);
          conn.Open();
          OracleCommand cmd = new OracleCommand(sql, conn);
          cmd.ExecuteNonQuery();
          conn.Close();
       }
       catch (Exception ex)
       {           
           // 你的错误提示
           err="Failed";
           break;
        }
     }
 }
 if (err=="Passed")
 {
     try
     {
          string strCon = "Data Source=数据库SID;user=XXXX;password=XXXXXX;Unicode=True;Omit Oracle Connection Name=True;";
          OracleConnection conn = new OracleConnection(strCon);
          conn.Open();
          OracleCommand cmd = new OracleCommand(存储过程, conn);
          cmd.CommandType = CommandType.StoredProcedure;
          cmd.ExecuteNonQuery();
          conn.Close();
     }
     catch (Exception ex)
     {
         // 你的错误提示
         err="Failed";
         break;
     }
      
 }

Oracle 存储过程

create or replace PROCEDURE PROC_ITEM_DELETE
as 
  counts Number;
  v_count number;
  -- 默认日期格式为 yyyymm
begin
      select MAX(data_column) from tabel_name;
      delete from tabel_name where data_column<data_column-6;
end;
玩转数据处理
2016-07-12 · 数据处理,Python,dotnet
玩转数据处理
采纳数:1613 获赞数:3794

向TA提问 私信TA
展开全部
C# 链接Excel也可进行数据筛选,筛选完后再导入sql server
共享你的Excel及你的Excel样档看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liyan922107
2016-07-12 · 超过72用户采纳过TA的回答
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:169万
展开全部
先全部导入进去 再删掉6个月之前的数据就可以了
追问
这个对于技术人员来说好办,可是这是做系统,不能每次都需要技术人员进入后台数据库来操作啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式