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

时间:2022-08-29 12:32:18

由此,需要操作以下几个步骤 
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,再插入数据库,本例为方便说明,将几个类放在一个页中,有更牛比的方法请指教,谢谢