json db 저장 (ajax 사용)
프로젝트를 하면서 인터페이스로 다른 시스템에서 작업하는 시스템으로 정보를 넘겨주는 경우는 엄청나게 많이 있지요. 이런 경우 다른 시스템 DB에서 작업하는 시스템 DB로 정보를 주면 쉽게 일이 진행되지만 그렇지 않고 파일로 넘겨주는 경우는 일이 많아집니다.
우선은 .aspx 파일에서의 처리 소스 입니다.
// .aspx
<%@ Page Title="작업 페이지" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="TxtJsonFileInsertDB.aspx.cs" Inherits="api.TxtJsonFileInsertDB" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
var strError = "";
var openFile = function (event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function () {
var text = reader.result;
// alert(JSON.stringify(text));
// alert(JSON.parse(text));
var obj = JSON.parse(text);
var array = eval(obj.bpi);
var strPrice = JSON.stringify(array);
var array = strPrice.split(",");
// BIT_BEFORE_INFO
for (var i = 0; i < array.length; i++) {
var infoArray = array[i].split(":");
var actionUrl = "TxtJsonFileInsertDB.aspx";
actionUrl += "?DB_TYPE=JSONINSERT";
actionUrl += "&DATE=" + escape(infoArray[0].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, ""));
actionUrl += "&PRICE=" + escape(infoArray[1].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, ""));
$.ajax({
type: "POST"
, asyn: true
, dataType: "json"
, url: actionUrl
, data: ""
, contentType: "application/json; charset=utf-8"
, beforeSend: function (req) {
req.setRequestHeader("DBAGENT", "BITCOIN");
}
, success: function (rtnJSON) {
// alert(rtnJSON);
}
, error: function (data, status, err) {
if (i != 0)
strError += "\n\r";
strError += infoArray[0].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, "") + " 날짜 에러"
}
, complete: function (jqXHR, textStatus) {
}
});
}
};
reader.readAsText(input.files[0]);
};
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<input type='file' accept='image/*' onchange='openFile(event)' /> <!-- 요기 부분의 파일 컨트롤을 이용하여 .txt(값의 구분은 콤마로 되있습니다. (.csv와 동일한 구조)) 파일을 선택할 때마다 값을 읽어 DB로 저장 합니다. -->
</asp:Content>
그리고 밑에는 값을 읽어 Ajax로 호출된 CS쪽 소스 입니다.
// .cs
protected void Page_Load(object sender, EventArgs e)
{
string agent = Convert.ToString(Request.Headers.Get("DBAGENT"));
if (agent == "BITCOIN")
{
string res = "";
string method = Convert.ToString(Request["DB_TYPE"]);
switch (method)
{
case "JSONINSERT":
res = this.txtJsonFileInsertDB(this.Request.Params);
break;
}
}
}
private string txtJsonFileInsertDB(System.Collections.Specialized.NameValueCollection parameters)
{
string result = "";
string strDATE = Convert.ToString(Request["DATE"]);
string strPRICE = Convert.ToString(Request["PRICE"]);
#region DB 저장
DacLibrary _dacLib = new DacLibrary();
try
{
_dacLib.BeginTransactionS();
/// TODO : 테이블과 프로시저 생성해서 돌려봐라
_dacLib.ExecuteNonQueryS("BIT_BEFORE_INFO_INSERT", strDATE, strPRICE);
_dacLib.CommitTransactionS();
}
catch (Exception err)
{
_dacLib.RollbackTransactionS();
result = err.Message.ToString();
}
#endregion
return result;
}
DB에 값을 넣는 부분은 프레임워크에서 하는 작업으로 Ajax의 값을 받는 부분만 참고하시면 되겠습니다.
이상으로 json db 저장 (ajax 사용)에 대해서 알아보았습니다.
오늘도 행복한 하루되세요~~~^^
오늘은 확장자가 .txt인 텍스트 파일로 정보가 넘어오는 경우 작업에 대해서 알아보겠습니다.
우선은 .aspx 파일에서의 처리 소스 입니다.
// .aspx
<%@ Page Title="작업 페이지" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="TxtJsonFileInsertDB.aspx.cs" Inherits="api.TxtJsonFileInsertDB" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
var strError = "";
var openFile = function (event) {
var input = event.target;
var reader = new FileReader();
reader.onload = function () {
var text = reader.result;
// alert(JSON.stringify(text));
// alert(JSON.parse(text));
var obj = JSON.parse(text);
var array = eval(obj.bpi);
var strPrice = JSON.stringify(array);
var array = strPrice.split(",");
// BIT_BEFORE_INFO
for (var i = 0; i < array.length; i++) {
var infoArray = array[i].split(":");
var actionUrl = "TxtJsonFileInsertDB.aspx";
actionUrl += "?DB_TYPE=JSONINSERT";
actionUrl += "&DATE=" + escape(infoArray[0].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, ""));
actionUrl += "&PRICE=" + escape(infoArray[1].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, ""));
$.ajax({
type: "POST"
, asyn: true
, dataType: "json"
, url: actionUrl
, data: ""
, contentType: "application/json; charset=utf-8"
, beforeSend: function (req) {
req.setRequestHeader("DBAGENT", "BITCOIN");
}
, success: function (rtnJSON) {
// alert(rtnJSON);
}
, error: function (data, status, err) {
if (i != 0)
strError += "\n\r";
strError += infoArray[0].replace(/{/gi, "").replace(/}/gi, "").replace(/\"/gi, "") + " 날짜 에러"
}
, complete: function (jqXHR, textStatus) {
}
});
}
};
reader.readAsText(input.files[0]);
};
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<input type='file' accept='image/*' onchange='openFile(event)' /> <!-- 요기 부분의 파일 컨트롤을 이용하여 .txt(값의 구분은 콤마로 되있습니다. (.csv와 동일한 구조)) 파일을 선택할 때마다 값을 읽어 DB로 저장 합니다. -->
</asp:Content>
그리고 밑에는 값을 읽어 Ajax로 호출된 CS쪽 소스 입니다.
// .cs
protected void Page_Load(object sender, EventArgs e)
{
string agent = Convert.ToString(Request.Headers.Get("DBAGENT"));
if (agent == "BITCOIN")
{
string res = "";
string method = Convert.ToString(Request["DB_TYPE"]);
switch (method)
{
case "JSONINSERT":
res = this.txtJsonFileInsertDB(this.Request.Params);
break;
}
}
}
private string txtJsonFileInsertDB(System.Collections.Specialized.NameValueCollection parameters)
{
string result = "";
string strDATE = Convert.ToString(Request["DATE"]);
string strPRICE = Convert.ToString(Request["PRICE"]);
#region DB 저장
DacLibrary _dacLib = new DacLibrary();
try
{
_dacLib.BeginTransactionS();
/// TODO : 테이블과 프로시저 생성해서 돌려봐라
_dacLib.ExecuteNonQueryS("BIT_BEFORE_INFO_INSERT", strDATE, strPRICE);
_dacLib.CommitTransactionS();
}
catch (Exception err)
{
_dacLib.RollbackTransactionS();
result = err.Message.ToString();
}
#endregion
return result;
}
DB에 값을 넣는 부분은 프레임워크에서 하는 작업으로 Ajax의 값을 받는 부분만 참고하시면 되겠습니다.
이상으로 json db 저장 (ajax 사용)에 대해서 알아보았습니다.
오늘도 행복한 하루되세요~~~^^
댓글
댓글 쓰기