C#에서 mariadb 사용하기

https://dev.mysql.com/downloads/connector/net/

Download Connector/NET(mysql-connector-net-8.0.13.msi)

mysql-connector-net-8.0.13.msi



 

C#프로젝트 [참조]에 라이브러리를 추가한다.(1개 : MySql.Data.dll)

C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.13\Assemblies\v4.5.2\MySql.Data.dll




<dbconnection class>에서 아래 라이브러리 이용하여 커넥션 클래스 구성.

오라클,msSql, mariadb 모두 비슷한 패턴임.

------------------------------------------------

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data;

using MySql.Data.MySqlClient;


namespace testWebApplication1

{

    public class MariaDbAccess

    {


        #region 멤버변수


        private MySqlConnection oCnn = null;

        /// <summary>

        /// DB 연결 스트링

        /// </summary>

        private string _connectionString = "SERVER=서버;DATABASE=데이타베이스명;UID=아이디;PASSWORD=패스워드;";


------------------------------------------------


'프로그래밍 > c#' 카테고리의 다른 글

WebBrowser이용한 스크린스크래핑  (0) 2018.05.09
WebBrowser.DocumentText 한글깨짐  (0) 2018.05.07
using MySqlConnector  (0) 2018.05.07

Open Api 를 이용해서 Request & Response 된 데이타를 

테이블에 저장하도록 한다.

Schema구성


>kakao open api 분석

>스키마구성



>mysql table 스크립트

-- <table SCHEMA> START-----------------------

CREATE TABLE `requestdata` (
`SQSeq` bigint(20) NOT NULL AUTO_INCREMENT,
`SearchKind` varchar(20) NOT NULL DEFAULT 'WEB',
`Query` varchar(100) NOT NULL,
`SearchDate` date NOT NULL,
PRIMARY KEY (`SQSeq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `responsedata` (
`SQSeq` bigint(20) NOT NULL,
`SubSeq` bigint(20) NOT NULL,
`Title` varchar(300) NOT NULL DEFAULT 'ETC',
`Contents` varchar(4000) DEFAULT NULL,
`Url` varchar(1000) DEFAULT NULL,
`Thumbnail_url` varchar(1000) DEFAULT NULL,
`Authors` varchar(1000) DEFAULT NULL,
`Price` int(11) DEFAULT NULL,
`Width` int(11) DEFAULT NULL,
`Height` int(11) DEFAULT NULL,
`Category` int(11) DEFAULT NULL,
`Datetime` date DEFAULT NULL,
`Etc` varchar(200) DEFAULT NULL,
PRIMARY KEY (`SQSeq`,`SubSeq`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- <table SCHEMA> END-----------------------



>스토어 프로시저로 등록/삭제

-- [START]요청 REQUESTDATA INSERT----------------

DELIMITER //

DROP PROCEDURE IF EXISTS SP_REQUESTDATA_INSERT //

CREATE PROCEDURE SP_REQUESTDATA_INSERT
(
IN InSearchKind varchar(20),
IN InQuery varchar(100),
OUT NewSQSeq bigint(20)
)

BEGIN
INSERT INTO requestdata
(
SearchKind
,Query
,SearchDate
)
VALUES
(
InSearchKind,
InQuery,
sysdate()
);

-- Auto Increment 값 조회
SELECT LAST_INSERT_ID()
INTO NewSQSeq; -- OUT 파라메터 담기

END//

DELIMITER ;
-- [END]요청 REQUESTDATA INSERT------------------


-- [START] 요청/결과 삭제 SP_REQUESTDATA_DELETE----
DELIMITER //

DROP PROCEDURE IF EXISTS SP_REQUESTDATA_DELETE //

CREATE PROCEDURE SP_REQUESTDATA_DELETE
(
IN InSQSeq bigint(20)
)

BEGIN

declare iResult bigint(20);
set iResult = 0;

DELETE FROM requestdata
WHERE SQSeq = InSQSeq;

DELETE FROM responsedata
WHERE SQSeq = InSQSeq;

END//

DELIMITER ;
-- [END]요청/결과 삭제 SP_REQUESTDATA_DELETE-------


-- [START]결과 SP_RESPONSEDATA_INSERT------------
DELIMITER //

DROP PROCEDURE IF EXISTS SP_RESPONSEDATA_INSERT //

CREATE PROCEDURE SP_RESPONSEDATA_INSERT
(
IN InSQSeq   bigint(20)
,IN InTitle   varchar(300)
,IN InContents    varchar(4000)
,IN InUrl varchar(1000)
,IN InThumbnail_url   varchar(1000)
,IN InAuthors varchar(1000)
,IN InPrice   int(11)
,IN InWidth   int(11)
,IN InHeight  int(11)
,IN InCategory    int(11)
,IN InDatetime    varchar(100)
,IN InEtc varchar(200)
,OUT OutResult bigint(20)
)

BEGIN

declare NewSubSeq bigint(20) default(0);

SELECT
IFNULL(MAX(SUBSEQ),0) + 1 into NewSubSeq
FROM RESPONSEDATA
WHERE SQSeq = InSQSeq;
SET OutResult = NewSubSeq;

INSERT INTO responsedata
(
SQSeq 
,SubSeq   
,Title    
,Contents 
,Url  
,Thumbnail_url    
,Authors  
,Price    
,Width    
,Height   
,Category 
,Datetime 
,Etc  
)
values
(
InSQSeq   
,NewSubSeq
,InTitle  
,InContents   
,InUrl    
,InThumbnail_url  
,InAuthors    
,InPrice  
,InWidth  
,InHeight 
,InCategory   
,date(InDatetime) 
,InEtc    
);


END//

DELIMITER ;
-- [END]결과 SP_RESPONSEDATA_INSERT--------------



>프로시저실행해서 등록하기


call SP_REQUESTDATA_INSERT('Book','삶의철학산책',@NewSQSeq);
select @NewSQSeq;

call SP_RESPONSEDATA_INSERT(1,'드 보통의 삶의 철학산책','복잡하고 힘겨운 삶을 유쾌하게 만드는 삶의 거장들이 알려주는 행복의 철학. 인기없음, 가난, 좌절, 부당함, 실연, 고통에 대한 허브 치료와도 같은 유쾌한 위안을 한권의 책으로 엮었다.','http://book.daum.net/detail/book.do?bookid=KOR9788984980624','http://t1.daumcdn.net/thumb/R72x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbook%2FKOR9788984980624%3Fmoddttm=20160223080929','알랭 드 보통',17000,0,0,5,'2002-04-25T00:00:00.000+09:00','8984980625 9788984980624',@OutResult);

select @OutResult;

call SP_RESPONSEDATA_INSERT(1,'고대 로마+한강역사문화탐사+삶의철학산책','&#39;고대 문명 시리즈&#39; 두 번째 권으로 고대 로마를 찾아간다. 로마의 사회, 정치, 문화, 예술의 다양한 면모를 가능한 명료하고 직접적으로 기술하여 로마를 직접 체험하는 느낌을 가질 수...','http://book.daum.net/detail/book.do?bookid=BOK00000039062LI','http://t1.daumcdn.net/thumb/P72x100/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbook%2FBOK00000039062LI%3Fmoddttm=20150609170927','안나 마리아 리베라티',95000,0,0,0,'2003-07-20T00:00:00.000+09:00','0004953282 0100004953286',@OutResult);

response된data.txt




'프로그래밍 > PHP' 카테고리의 다른 글

kanboard로 프로젝트 관리하기  (0) 2020.05.26
WAMP 설치  (0) 2020.05.26
curl kakao open api 도서검색  (0) 2018.08.10
curl kakao open api 이미지검색하기  (0) 2018.08.06
curl kakao open api사용하기  (0) 2018.08.05

다움API 3번째 도서검색.

이미지,블로그,웹,도서,푸시알림까지 되면  

실제 필요한 물건을 만들수 있지 않을까..... 생각아 좀더 나거라~


오픈API 사용량에 관계없이 무제한으로 쓸수있는지 궁금해지네.... 

스크래핑 하지 않고 이렇게 API호출해서 받으니 쉽고 빠르고 좋다.


testpage 도서검색) http://doitforyou.co.kr/test/curl_daum_search_book.php

testpage 웹검색) http://doitforyou.co.kr/test/curl_daum_search_web.php

testpage 이미지검색) http://doitforyou.co.kr/test/curl_daum_search_image.php


<?php
function request($path, $query, $content_type = 'json')
{
$api_server = 'https://dapi.kakao.com';
$headers = array('Authorization: KakaoAK {APIKEY} ');
$opts = array(
CURLOPT_URL => $api_server . $path . '.' . $content_type . '?' . $query,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSLVERSION => 1,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers
);

$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$return_data = curl_exec($curl_session);

if (curl_errno($curl_session)) {
throw new Exception(curl_error($curl_session));
} else {
//print_r(curl_getinfo($curl_session));
curl_close($curl_session);
return $return_data;
}
}


$path = '/v2/search/book';
$content_type = 'json'; // json or xml
$params = http_build_query(array(
'page' => 1,
'size' => 50,
'query' => 'PHP'
,
'category' => 33
));

$res = request($path, $params, $content_type);

//header('Content-Type: application/' . $content_type . '; charset=utf-8');
// echo $res;
//echo $res;
//var_dump($res);
$dt = json_decode($res); //json data type => php object로 변환
//json_encode : php object/array => json data type으로 변환
// var_dump( $dt);

$tCount = $dt->meta->total_count;
$iCnt = count($dt->documents);
echo "<br>";
echo "tCnt_totalcnt:".$tCount . "/" ."iCnt_documents:".$iCnt;
echo "<br>";

for ($i=0; $i < $iCnt; $i++)
{
echo "<p>";

echo "title:".$dt->documents[$i]->title."<br>";
echo "contents:".$dt->documents[$i]->contents."<br>";
echo "url:".$dt->documents[$i]->url."<br>";
echo "isbn:".$dt->documents[$i]->isbn."<br>";

$iCntAuthor = 0;
$iCntAuthor = count($dt->documents[$i]->authors);

for($z=0; $z < $iCntAuthor; $z++)
{
if($z==0){
echo "authors:";
}
echo $dt->documents[$i]->authors[$z];
if($z <> ($iCntAuthor-1) )
{
echo ",";
};
}

echo "</p>";

}
?>


'프로그래밍 > PHP' 카테고리의 다른 글

WAMP 설치  (0) 2020.05.26
Open Api Request / Response Schema구성&실행  (0) 2018.08.19
curl kakao open api 이미지검색하기  (0) 2018.08.06
curl kakao open api사용하기  (0) 2018.08.05
php CURL 사용하기  (0) 2018.07.31

+ Recent posts