asp.net 读取文本文件并插入数据库的实现代码

由此,需要操作以下几个步骤
1,上传txt文件至公司系统
2,读取需要的内容
3,将内容插入到数据库中(需要判断重复)
4,与现有订单数据进行对比
本程序只研究读取需要的内容和插入数据库


代码如下:

using System;
using System.Data;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using service.DAL;
using System.Reflection;
namespace service.fin
{
[Serializable]
public class SettlementCmbModel
{
public SettlementCmbModel() { }
#region Model
private int _id;
private string _terminalno;
private DateTime? _tradetime;
private string _batchno;
private string _channel;
private string _empowerno;
private string _orderno;
private string _cardno;
private string _cardmark;
private string _tradetype;
private string _businesstype;
private string _goodsno;
private string _stages;
private decimal? _tradeamount;
private decimal? _commissionamount;
private decimal? _returnfee;
private decimal? _memberspoint1;
private decimal? _memberspoint2;
private decimal? _mpcmbpercent;
private decimal? _mpvalue;
private decimal? _realamount;
/// <summary>
///
/// </summary>
public int Id
{
set { _id = value; }
get { return _id; }
}
/// <summary>
///
/// </summary>
public string TerminalNo
{
set { _terminalno = value; }
get { return _terminalno; }
}
/// <summary>
///
/// </summary>
public DateTime? TradeTime
{
set { _tradetime = value; }
get { return _tradetime; }
}
/// <summary>
///
/// </summary>
public string BatchNo
{
set { _batchno = value; }
get { return _batchno; }
}
/// <summary>
///
/// </summary>
public string Channel
{
set { _channel = value; }
get { return _channel; }
}
/// <summary>
///
/// </summary>
public string EmpowerNo
{
set { _empowerno = value; }
get { return _empowerno; }
}
/// <summary>
///
/// </summary>
public string OrderNo
{
set { _orderno = value; }
get { return _orderno; }
}
/// <summary>
///
/// </summary>
public string CardNo
{
set { _cardno = value; }
get { return _cardno; }
}
/// <summary>
///
/// </summary>
public string CardMark
{
set { _cardmark = value; }
get { return _cardmark; }
}
/// <summary>
///
/// </summary>
public string TradeType
{
set { _tradetype = value; }
get { return _tradetype; }
}
/// <summary>
///
/// </summary>
public string BusinessType
{
set { _businesstype = value; }
get { return _businesstype; }
}
/// <summary>
///
/// </summary>
public string GoodsNo
{
set { _goodsno = value; }
get { return _goodsno; }
}
/// <summary>
///
/// </summary>
public string Stages
{
set { _stages = value; }
get { return _stages; }
}
/// <summary>
///
/// </summary>
public decimal? TradeAmount
{
set { _tradeamount = value; }
get { return _tradeamount; }
}
/// <summary>
///
/// </summary>
public decimal? CommissionAmount
{
set { _commissionamount = value; }
get { return _commissionamount; }
}
/// <summary>
///
/// </summary>
public decimal? ReturnFee
{
set { _returnfee = value; }
get { return _returnfee; }
}
/// <summary>
///
/// </summary>
public decimal? MembersPoint1
{
set { _memberspoint1 = value; }
get { return _memberspoint1; }
}
/// <summary>
///
/// </summary>
public decimal? MembersPoint2
{
set { _memberspoint2 = value; }
get { return _memberspoint2; }
}
/// <summary>
///
/// </summary>
public decimal? MPCmbPercent
{
set { _mpcmbpercent = value; }
get { return _mpcmbpercent; }
}
/// <summary>
///
/// </summary>
public decimal? MPValue
{
set { _mpvalue = value; }
get { return _mpvalue; }
}
/// <summary>
///
/// </summary>
public decimal? RealAmount
{
set { _realamount = value; }
get { return _realamount; }
}
#endregion Model
}
public class SettlementCmbDal
{
public SettlementCmbDal() { }
#region 增加数据
public static int Add(SettlementCmbModel model)
{
StringBuilder strSql = new StringBuilder();
StringBuilder strSql1 = new StringBuilder();
StringBuilder strSql2 = new StringBuilder();
if (model.TerminalNo != null)
{
strSql1.Append("TerminalNo,");
strSql2.Append("'" + model.TerminalNo + "',");
}
if (model.TradeTime != null)
{
strSql1.Append("TradeTime,");
strSql2.Append("'" + model.TradeTime + "',");
}
if (model.BatchNo != null)
{
strSql1.Append("BatchNo,");
strSql2.Append("'" + model.BatchNo + "',");
}
if (model.Channel != null)
{
strSql1.Append("Channel,");
strSql2.Append("'" + model.Channel + "',");
}
if (model.EmpowerNo != null)
{
strSql1.Append("EmpowerNo,");
strSql2.Append("'" + model.EmpowerNo + "',");
}
if (model.OrderNo != null)
{
strSql1.Append("OrderNo,");
strSql2.Append("'" + model.OrderNo + "',");
}
if (model.CardNo != null)
{
strSql1.Append("CardNo,");
strSql2.Append("'" + model.CardNo + "',");
}
if (model.CardMark != null)
{
strSql1.Append("CardMark,");
strSql2.Append("'" + model.CardMark + "',");
}
if (model.TradeType != null)
{
strSql1.Append("TradeType,");
strSql2.Append("'" + model.TradeType + "',");
}
if (model.BusinessType != null)
{
strSql1.Append("BusinessType,");
strSql2.Append("'" + model.BusinessType + "',");
}
if (model.GoodsNo != null)
{
strSql1.Append("GoodsNo,");
strSql2.Append("'" + model.GoodsNo + "',");
}
if (model.Stages != null)
{
strSql1.Append("Stages,");
strSql2.Append("'" + model.Stages + "',");
}
if (model.TradeAmount != null)
{
strSql1.Append("TradeAmount,");
strSql2.Append("" + model.TradeAmount + ",");
}
if (model.CommissionAmount != null)
{
strSql1.Append("CommissionAmount,");
strSql2.Append("" + model.CommissionAmount + ",");
}
if (model.ReturnFee != null)
{
strSql1.Append("ReturnFee,");
strSql2.Append("" + model.ReturnFee + ",");
}
if (model.MembersPoint1 != null)
{
strSql1.Append("MembersPoint1,");
strSql2.Append("" + model.MembersPoint1 + ",");
}
if (model.MembersPoint2 != null)
{
strSql1.Append("MembersPoint2,");
strSql2.Append("" + model.MembersPoint2 + ",");
}
if (model.MPCmbPercent != null)
{
strSql1.Append("MPCmbPercent,");
strSql2.Append("" + model.MPCmbPercent + ",");
}
if (model.MPValue != null)
{
strSql1.Append("MPValue,");
strSql2.Append("" + model.MPValue + ",");
}
if (model.RealAmount != null)
{
strSql1.Append("RealAmount,");
strSql2.Append("" + model.RealAmount + ",");
}
strSql.Append("insert into CRM_Settlement_CMB(");
strSql.Append(strSql1.ToString().Remove(strSql1.Length - 1));
strSql.Append(")");
strSql.Append(" values (");
strSql.Append(strSql2.ToString().Remove(strSql2.Length - 1));
strSql.Append(")");
strSql.Append(";select @@IDENTITY");
return SqlHelper.ExecuteNonQuery(strSql.ToString());
}
#endregion
#region 获取model
public static SettlementCmbModel GetModel(DataRow dr)
{
SettlementCmbModel model = new SettlementCmbModel();
model.TerminalNo = dr["TerminalNo"].ToString();
if (dr["TradeTime"].ToString() != "")
{
model.TradeTime = DateTime.Parse(dr["TradeTime"].ToString());
}
model.BatchNo = dr["BatchNo"].ToString();
model.Channel = dr["Channel"].ToString();
model.EmpowerNo = dr["EmpowerNo"].ToString();
model.OrderNo = dr["OrderNo"].ToString();
model.CardNo = dr["CardNo"].ToString();
model.CardMark = dr["CardMark"].ToString();
model.TradeType = dr["TradeType"].ToString();
model.BusinessType = dr["BusinessType"].ToString();
model.GoodsNo = dr["GoodsNo"].ToString();
model.Stages = dr["Stages"].ToString();
if (dr["TradeAmount"].ToString() != "")
{
model.TradeAmount = decimal.Parse(dr["TradeAmount"].ToString());
}
if (dr["CommissionAmount"].ToString() != "")
{
model.CommissionAmount = decimal.Parse(dr["CommissionAmount"].ToString());
}
if (dr["ReturnFee"].ToString() != "")
{
model.ReturnFee = decimal.Parse(dr["ReturnFee"].ToString());
}
if (dr["MembersPoint1"].ToString() != "")
{
model.MembersPoint1 = decimal.Parse(dr["MembersPoint1"].ToString());
}
if (dr["MembersPoint2"].ToString() != "")
{
model.MembersPoint2 = decimal.Parse(dr["MembersPoint2"].ToString());
}
if (dr["MPCmbPercent"].ToString() != "")
{
model.MPCmbPercent = decimal.Parse(dr["MPCmbPercent"].ToString());
}
if (dr["MPValue"].ToString() != "")
{
model.MPValue = decimal.Parse(dr["MPValue"].ToString());
}
if (dr["RealAmount"].ToString() != "")
{
model.RealAmount = decimal.Parse(dr["RealAmount"].ToString());
}
return model;
}
#endregion
}
public partial class ReadTxt : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void txtInput()
{
//反射的方法获取字段
SettlementCmbModel model = new SettlementCmbModel();
PropertyInfo[] obj = model.GetType().GetProperties();
DataTable dt = new DataTable();
foreach (PropertyInfo p in obj)
{
dt.Columns.Add(p.Name);
}
//构造DataRow
StreamReader sr = new StreamReader(Server.MapPath("text.txt"), System.Text.Encoding.GetEncoding("GB2312"));
while (!sr.EndOfStream)
{
string s = sr.ReadLine();
if (s.StartsWith(" NET"))
{
s = s.Trim();
s = s.Replace("- ", "-");
string[] ss = s.Split(' ');
object[] datarow = new object[dt.Columns.Count];
int i = 0;
foreach (string st in ss)
{
if (st != "")
{
datarow[i] = st;
i++;
}
}
dt.Rows.Add(datarow);
}
}
sr.Close();
//执行插入数据库动作
int j = 0;
foreach (DataRow dr in dt.Rows)
{
SettlementCmbModel _model = SettlementCmbDal.GetModel(dr);
//处理交易时间导入时出现在问题
string s = _model.TerminalNo;
int year = int.Parse(s.Substring(0, 4));
int month = int.Parse(s.Substring(4, 2));
int day = int.Parse(s.Substring(6, 2));
string st = _model.TradeTime.ToString();
string[] str = st.Split(' ');
string[] stri = str[1].Split(':');
int hour = int.Parse(stri[0]);
int minute = int.Parse(stri[1]);
int second = int.Parse(stri[2]);
DateTime de = new DateTime(year, month, day, hour, minute, second);
_model.TradeTime = de;
_model.TerminalNo = "NET";
//订单号头加一个0
_model.OrderNo = "0" + _model.OrderNo;
if (SqlHelper.GetRecordCount("CRM_Settlement_CMB", " OrderNo like '" + _model.OrderNo + "'") ==0)
{
j += SettlementCmbDal.Add(_model);
}
}
this.Literal1.Text = "成功更新" + j + "行";
//StringBuilder sb = new StringBuilder();
//sb.Append("<table>");
//foreach (DataRow dr in dt.Rows)
//{
// sb.Append("<tr>");
// foreach (DataColumn dc in dt.Columns)
// {
// sb.Append("<td>" + dr[dc.ColumnName].ToString() + "</td>");
// }
// sb.Append("</tr>");
//}
//sb.Append("</table>");
//this.Literal1.Text = sb.ToString();
}
}
}

思路是读取txt,然后构造DataTable,然后由反射方式取得model,再插入数据库,本例为方便说明,将几个类放在一个页中,有更牛比的方法请指教,谢谢

(0)

相关推荐

  • 拦截asp.net输出流并进行处理的方法

    本文实例主要实现对已经生成了HTML的页面做一些输出到客户端之前的处理. 方法的实现原理是:把Response的输出重定向到自定义的容器内,也就是我们的StringBuilder对象里,在HTML所有的向页面输出都变成了向StringBuilder输出,然后我们对StringBuilder处理完成之后,再把Response的输出重定向到原来的页面上,然后再通过Response.Write方法把StringBuilder的内容输出到页面上. 这里之所以用反射,是因为Response对象的OutPu

  • 快速插入大量数据的asp.net代码(Sqlserver)

    复制代码 代码如下: using System.Data; using System.Diagnostics; using System.Data.SqlClient; string connectionString = "Data Source=HG-J3EJJ9LSW5PY;Initial Catalog=Test;User ID=sa;password=hg"; DataTable dataTable = sql_.select_datagrid(" select a

  • asp.net利用后台实现直接生成html分页的方法

    本文实例讲述了asp.net利用后台实现直接生成html分页的方法,是一个比较实用的功能.分享给大家供大家参考之用.具体方法如下: 1.建立存储过程: ALTER procedure [dbo].[p_news_query] @Page int as begin select top 5 new_id,new_title,new_url,new_content_text,create_time,user_name from (select *,ROW_NUMBER() over(order by

  • asp.net 使用SqlBulkCopy极速插入数据到 SQL Server

    按这个来算,我们那个发水票的时间就会由 10分钟-->20秒,这可太神奇了. 于是乎,下demo,测试,改成自己一般使用的方法测试,NND,还真可以说是极速. 在此贴上我的Demo:SqlBulkCopy.rar 复制代码 代码如下: using System; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using Microsoft.ApplicationBlocks.Data; name

  • ASP.net(c#)用类的思想实现插入数据到ACCESS例子

    昨天写了一半,一直没弄清楚当ACCESS数据库的连接代码写成类的时候路径该怎么写,搞了半天,还是用绝对路径解决了,似乎Server.MapPath没法在cs文件中使用. 要实现的功能如下: 尽量用类的思想来完成数据的插入,因为这个例子简单,所以我也就不多说什么.大家自己看代码,不懂的可以到论坛交流. 1.首先是ACCESS数据库的设计,数据库名:myData,表名:student 字段名称                    数据类型 sid                          

  • 推荐8项提高 ASP.NET Web API 性能的技术

    在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响.在我的一个项目里,我从JSON.NET 序列化工具转到了ServiceStack.Text有一年半了. 我测量过,Web API 的性能提升了20%左右.我强烈建议你去尝试一下这个序列化工具.这里有一些最近的流行序列化工具性能的比较数据. 来源:theburningmonk 更新: 似乎It seams

  • Asp.Net使用Bulk实现批量插入数据

    本文实例讲述了Asp.Net使用Bulk实现批量插入数据的方法,分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Diagnostics; using System.Data; using System.Data.SqlClient; using System.Configuration;

  • asp.net页面SqlCacheDependency缓存实例

    缓存技术是asp.net程序设计中非常实用的技术,也是大型web程序设计中比较常见的技术.本文就以实例形式对此加以说明.具体如下: asp.net页面的SqlCacheDependency Sql缓存: Cahce/SqlCachePage.aspx页面代码如下: <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile=&qu

  • Asp.Net使用Npoi导入导出Excel的方法

    asp.net针对Excel文件的导入与导出是非常常见的功能之一.本文实例讲述了Asp.Net使用Npoi导入导出Excel的方法.分享给大家供大家参考之用.具体方法如下: 在使用Npoi导出Excel的时候,服务器可以不装任何office组件,一般在导出时用到Npoi导出Excel文件,所导Excel也符合规范,打开时也不会有任何文件损坏之类的提示.但是在做导入时还是使用OleDb的方式,这种方式的导入在服务器端似乎还是需要装office组件的. 一.Npoi导出/下载Excel 具体功能代码

  • asp.net 读取文本文件并插入数据库的实现代码

    由此,需要操作以下几个步骤 1,上传txt文件至公司系统 2,读取需要的内容 3,将内容插入到数据库中(需要判断重复) 4,与现有订单数据进行对比 本程序只研究读取需要的内容和插入数据库 复制代码 代码如下: using System; using System.Data; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using

  • asp.net 读取并显示excel数据的实现代码

    我们的ASP页面将在远程服务器上,来读取我们的桌面Excel文件.首先,我们必须把它上传到远程服务器,然后retrive数据.因此,我们首先设计一个表格,上传到服务器.我们必须从文件retrive数据,再一次,所以我们将重新命名Excel,然后上传. 复制代码 代码如下: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits=&q

  • PHP接收json 并将接收数据插入数据库的实现代码

    最近有一个需求,前端向后台提交json,后台解析并且将提交的值插入数据库中, 难点 1.php解析json(这个不算难点了,网上实例一抓一大把) 2.解析json后,php怎样拿到该拿的值 <?php require ('connect.php'); /* 本例用到的数据: post_array={"order_id":"0022015112305010013","buyer_id":"2","seller_i

  • Php连接及读取和写入mysql数据库的常用代码

    既然现在你看到了这篇文章,说明你肯定知道PHP和MySQL是怎么一回事,我就不啰嗦了.但为什么你还要继续阅读此文呢?可能是以前你习惯复制粘贴一些代码,并没有真正弄懂代码的含义:也可能你以前弄懂了,但像我一样,有一段时间没有接触,生疏了:再或者,有人问你类似的简单问题,而你已经不屑于回答,直接上网搜索,恰好找到了这篇,于是就推荐给那谁谁谁了... 不管怎样,在这里我总结了常用的PHP连接MySQL数据库以及读取写入数据库的方法,希望能够帮到你,当然也是作为我自己的一个回顾总结. 1.为了更好地设置

  • 用vbs读取文本文件的最后一行

    问: 您好,脚本专家!如何仅读取文本文件的最后一行? -- BM 答: 您好,BM.如果您曾经想知道您好,脚本专家!与其它每日专栏(比如,知心姐姐)的不同之处,那么,下面是一种途径.假设有人在给知心姐姐的信中说: 知心姐姐: 我的生活一团糟,我需要采取一些措施来应对.我如何能扭转我的生活并且重新快乐起来? 绝望之人于代顿 知心姐姐绝不会给绝望之人这样的答复: 亲爱的绝望之人: 唉,您的生活不能变好了.很抱歉. 那么,您认为脚本专家会如何答复您关于读取文本文件的最后一行呢?答对了: 亲爱的 BM:

  • asp.net动态获取Excel表名的函数代码

    复制代码 代码如下: public string GetExcelFirstTableName(string excelFileName) { string tableName = null; if (File.Exists(excelFileName)) { using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet." + "OLEDB.4.0;Extended Properties=

  • python读取word文档,插入mysql数据库的示例代码

    表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding:utf-8 -*- # 读取docx中的文本代码示例 import docx import pymysql import re import os # 创建数据库链接 conn = pymysql.connect( host='rm-bp1vu5d84dg12c6d59o.mysql.rds.ali

  • 使用python读取csv文件快速插入数据库的实例

    如下所示: # -*- coding:utf-8 -*- # auth:ckf # date:20170703 import pandas as pd import cStringIO import warnings from sqlalchemy import create_engine import sys reload(sys) sys.setdefaultencoding('utf8') warnings.filterwarnings('ignore') engine = create_

  • PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法

    本文实例讲述了PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法.分享给大家供大家参考,具体如下: test.txt文件: Welcome to our website jb51.net www.jb51.net php asp java jsp php代码(读取test.txt文件): $myfile = fopen("test.txt", "r"); while(!feof($myfile)) { $line_str = fgets($myfile)

  • asp.net读取excel文件的三种方法示例

    方法一:采用OleDB读取Excel文件 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: 复制代码 代码如下: public DataSet ExcelToDS(string Path)   {   string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;&

随机推荐