Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream> //메인해더파일
- #include<iomanip> //cout정렬
- #include<string>
- //^C++해더파일
- #include<my_global.h>
- #include<mysql.h>
- //^MySQL 해더파일
- #include<conio.h>
- #include<winsock2.h>
- #include<Windows.h>
- //^레거시 C언어 해더파일
- #define snprintf _snprintf
- using namespace std;
- #pragma comment(lib ,"libmysql.lib")
- #define DB_HOST "[Server URL or IP Address]" //서버주소
- #define DB_USER "[DB UserName]" //DB아이디
- #define DB_PASS "[Password]" //DB비밀번호
- #define DB_NAME "[DB Name]" //DB이름
- #define DB_TABLE "test44" //Table이름
- int main(void)
- {
- system("mode con:cols=101 lines=50"); //윈도우창 크기설정
- system("title TESTNANA v1.0"); //윈도우창 타이틀
- MYSQL *connection = NULL, conn; //MYSQL함수 선언(coon는 Client, connection는 서버 연결저장)
- MYSQL_RES *sql_result; //결과값 저장 자료형
- MYSQL_ROW sql_row; //Table의 레코드값을 가져오는 자료형.
- int query_stat; //Table간 연결저장
- int select; //그냥 선택할때 쓰는 함수.
- mysql_init(&conn); //MySQL연결준비
- connection = mysql_real_connect(&conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 3306, (char *)NULL, 0); //MySQL서버에 연결해서 DB을 선택한다 그리고 이걸 connction에 저장한다.
- if (connection == NULL) //MySQL연결이 안되거나 DB을 찾을수 없으면 ERROR
- {
- cout << stderr << " MySQL Connection Error : " << mysql_error(&conn) << endl;
- return 1;
- }
- mysql_set_character_set(&conn, "euckr"); //인코딩언어선언은 한글로 설정
- //mysql_options(&conn, MYSQL_SET_CHARSET_NAME, "utf8");
- //mysql_options(&conn, MYSQL_INIT_COMMAND, "SET NAMES utf8");
- //mysql_real_connect(&conn, T_SERVER, T_USER, T_PASSWD, T_DBNM, 0, 0, 0);
- cout << "MySQL Server Version : " << mysql_get_server_info(&conn) << endl; //Server쪽 MySQL버전표시
- cout << "MySQL Client Version : " << mysql_get_client_info() << endl << endl; //Client쪽 MySQL버전표시
- while (1)
- {
- query_stat = mysql_query(connection, "select * from " DB_TABLE); //Table선택
- if (query_stat != 0) //Table을 찾을수 없으면 ERROR
- {
- cout << stderr << " MySQL Connection Error : " << mysql_error(&conn) << endl;
- return 1;
- }
- sql_result = mysql_store_result(connection); //Table에 있는 값을 찾아서 sql_result에 저장.
- cout << "====================================MySQL 입출력 테스트 프로그램!====================================";
- cout << "MENU>1)리스트출력 | 2)리스트추가 | 3)수정 | 4)검색 | 5)통계 | 6)삭제 | 7)종료" << endl;
- cout << "INPUT>"; cin >> select;
- if (select == 7) { //select가 6이면 프로그램 종료
- cout << "ByeBye!" << endl;
- mysql_close(connection); //MySQL커넥션 종료
- return 0;
- }
- if (cin.fail()) { //한자리 숫자가 아니라 다른것을 입력시 나오는 무한반복방지.
- cout << "ERROR>잘못된 선택" << endl << endl;
- //cout<<"Error>PLZ ENTER NUM! NOT CHAR!"<<endl;
- cin.clear(); cin.ignore(256, '\n');
- }
- cin.ignore();
- switch (select)
- {
- case 1:
- cout << "|관서명 |살인발생|살인검거|강도발생|강도검거|강간발생|강간검거|";
- cout << "절도발생|절도검거|폭력발생|폭력검거|" << endl;
- for (int i = 0; i < 100; i++)cout << "-";
- cout << endl;
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- //cout.setf(ios::left);
- //if(strlen(sql_row[0])==3) cout << sql_row[0] << " |";
- cout << "|" << setw(8) << sql_row[0] << "|";
- cout.setf(ios::right); //오른쪽 정렬
- cout << setw(8) << sql_row[1] << "|" << setw(8) << sql_row[2] << "|"; //sql_row[열].
- cout << setw(8) << sql_row[3] << "|" << setw(8) << sql_row[4] << "|"; //Ex) |5|4|9|8| , sql_row[2] = 9
- cout << setw(8) << sql_row[5] << "|" << setw(8) << sql_row[6] << "|";
- cout << setw(8) << sql_row[7] << "|" << setw(8) << sql_row[8] << "|";
- cout << setw(8) << sql_row[9] << "|" << setw(8) << sql_row[10] << "|" << endl;
- }mysql_free_result(sql_result); _getch(); break; //결과값을 메모리에서 제거
- case 2: {
- string name; int len, num[10], cksum=0; //[디버깅]case2번은 DB테스트용 더미로직
- char query[100];
- cout << "관서명 :"; getline(cin, name); //검색할값 입력
- len = 8 - name.size(); //남은자리수계산
- if ((len > 0) && (len < 8)) { //만약에 남은 자리수가 0개 남았거나 8개 미만라면
- if ((len % 2) != 0) name += " ";
- for (int i = 0; i < len / 2; i++)name += " ";
- }
- else if ((len <= 0) && (len >= 8)) { //만약에 남은 자리수가 0개미만 또는 8개이상이면
- cout << "잘못된 검색어" << endl; break;
- }
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- if (name == sql_row[0]) //search와 sql_row[0]가 같은값이면
- {
- cksum = 1;
- break;
- }
- }mysql_free_result(sql_result);
- if (cksum != 0){
- cout << "DB상에 동일이름이 등록되어 있습니다." << endl;
- }
- else{
- cout << "살인발생:"; cin >> num[0];
- cout << "살인검거:"; cin >> num[1];
- cout << "강도발생:"; cin >> num[2];
- cout << "강도검거:"; cin >> num[3];
- cout << "강간발생:"; cin >> num[4];
- cout << "강간검거:"; cin >> num[5];
- cout << "절도발생:"; cin >> num[6];
- cout << "절도검거:"; cin >> num[7];
- cout << "폭력발생:"; cin >> num[8];
- cout << "폭력검거:"; cin >> num[9];
- sprintf_s(query, "insert into " DB_TABLE " values" "('%s','%d','%d','%d','%d','%d','%d','%d','%d','%d','%d','')",
- name.c_str(), num[0], num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9]);
- //^ MySQL상에서 Delete명렁어 실행커멘드을 query에 저장
- query_stat = mysql_query(connection, query); //실행
- if (query_stat != 0) { //실행실패시 ERROR
- cout << stderr << " MySQL Connection Error : " << mysql_error(&conn) << endl;
- return 1;
- }
- } _getch(); break;
- }
- case 3: {
- string search,s_query; int len, num[10], cksum = 0;
- cout << "관서명 :"; getline(cin, search); //검색할값 입력
- char query[1024];
- len = 8 - search.size(); //남은자리수계산
- if ((len > 0) && (len < 8)) { //만약에 자리수가 0개 남았거나 8개 미만라면
- if ((len % 2) != 0) search += " ";
- for (int i = 0; i < len / 2; i++) search += " ";
- }
- else if ((len <= 0) && (len >= 8)) { //만약에 남은 자리수가 0개미만 또는 8개이상이면
- cout << "잘못된 검색어" << endl; break;
- }
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- if (search == sql_row[0]) //search와 sql_row[0]가 같은값이면
- {
- int tmp = atoi(sql_row[11]);
- cout << tmp << endl;
- cout << "살인발생:"; cin >> num[0];
- cout << "살인검거:"; cin >> num[1];
- cout << "강도발생:"; cin >> num[2];
- cout << "강도검거:"; cin >> num[3];
- cout << "강간발생:"; cin >> num[4];
- cout << "강간검거:"; cin >> num[5];
- cout << "절도발생:"; cin >> num[6];
- cout << "절도검거:"; cin >> num[7];
- cout << "폭력발생:"; cin >> num[8];
- cout << "폭력검거:"; cin >> num[9];
- sprintf_s(query, "update " DB_TABLE " set 살인발생 = '%d', 살인검거 = '%d', "
- "강도발생 = '%d', 강도검거 = '%d', 강간발생 = '%d', 강간검거 = '%d', "
- "절도발생 = '%d', 절도검거 = '%d', 폭력발생 = '%d', 폭력검거 = '%d' where cksum = '%d'",
- num[0], num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9],tmp);
- //s_query = "update" + "123";
- /*UPDATE `zadmin_test11`.`test44` SET `살인 발생` = '3',
- `살인 검거` = '3',
- `강도 발생` = '3',
- `강도 검거` = '3',
- `강간 발생` = '3',
- `강간 검거` = '3',
- `절도 발생` = '3',
- `절도 검거` = '3',
- `폭력 발생` = '3',
- `폭력 검거` = '3' WHERE `test44`.`cksum` =32;*/
- //^ MySQL상에서 Update명렁어 실행커멘드을 query에 저장
- query_stat = mysql_query(connection, query); //실행
- if (query_stat != 0) { //실행실패시 ERROR
- cout << stderr << " MySQL Connection Error : " << mysql_error(&conn) << endl;
- return 1;
- }
- cksum++; break; //cksum이 카운터되고 나옴.
- }
- } if (cksum == 0) { //cksum이 0이면
- cout << "잘못된 검색어" << endl;
- }mysql_free_result(sql_result); _getch(); break; //결과값을 메모리에서 제거
- }
- case 4: {
- string search; int len, cksum = 0;
- static int num[10];
- cout << "관서명 :"; getline(cin, search); //검색할값 입력
- len = 8 - search.size(); //남은자리수계산
- cout << len << endl;
- if ((len > 0) && (len < 8)) { //만약에 자리수가 0개 남았거나 8개 미만라면
- if ((len % 2) != 0) search += " ";
- for (int i = 0; i < len / 2; i++) search += " ";
- }
- else if ((len <= 0) && (len >= 8)) { //만약에 남은 자리수가 0개미만 또는 8개이상이면
- cout << "잘못된 검색어" << endl; break;
- }
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- if (search == sql_row[0]) //search와 sql_row[0]가 같은값이면
- {
- cout << "|" << setw(8) << sql_row[0] << "|";
- cout.setf(ios::right); //오른쪽 정렬
- cout << setw(8) << sql_row[1] << "|" << setw(8) << sql_row[2] << "|"; //sql_row[열]
- cout << setw(8) << sql_row[3] << "|" << setw(8) << sql_row[4] << "|"; //Ex) |5|4|9|8| , sql_row[2] = 9
- cout << setw(8) << sql_row[5] << "|" << setw(8) << sql_row[6] << "|";
- cout << setw(8) << sql_row[7] << "|" << setw(8) << sql_row[8] << "|";
- cout << setw(8) << sql_row[9] << "|" << setw(8) << sql_row[10] << "|" << endl;
- cksum++; break; //cksum이 카운터되고 나옴.
- }
- } if (cksum == 0) { //cksum이 0이면
- cout << "잘못된 검색어" << endl;
- }mysql_free_result(sql_result); _getch(); break; //결과값을 메모리에서 제거
- }
- case 5: {
- static int num[10];
- string v_name[5] = { "살인","강도","강간","절도","폭력", };
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- //cout << atoi(sql_row[1]) << endl;
- num[0] += atoi(sql_row[1]); //총 살인발생(더하기)
- num[1] += atoi(sql_row[2]); //총 살인검거(더하기)
- num[2] += atoi(sql_row[3]); //총 강도발생(더하기)
- num[3] += atoi(sql_row[4]); //총 강도검거(더하기)
- num[4] += atoi(sql_row[5]); //총 강간발생(더하기)
- num[5] += atoi(sql_row[6]); //총 강간검거(더하기)
- num[6] += atoi(sql_row[7]); //총 절도발생(더하기)
- num[7] += atoi(sql_row[8]); //총 절도검거(더하기)
- num[8] += atoi(sql_row[9]); //총 폭력발생(더하기)
- num[9] += atoi(sql_row[10]); //총 폭력검거(더하기)
- }mysql_free_result(sql_result); //결과값을 메모리에서 제거
- cout << "======2015년 서울특별시 5대범죄 통계현황======" << endl;
- cout << "| 종류 |총발생량|총검거량|검거비율| 비고 |" << endl;
- for (int i = 0; i < 10; i += 2) {
- double nn = ((double)num[i + 1] / (double)num[i]) * 100.0; //비율계산
- cout.setf(ios::fixed); cout.precision(2); //소수점2자리설정(반올림)
- cout << "| " << v_name[i / 2] << " |" << setw(8) << num[i] << "|";//정보출력
- cout << setw(8) << num[i + 1] << "|" << setw(7) << nn << "%|"; //^^^
- cout << " |" << endl; cout.unsetf(ios::fixed); //비고란는 딱히추가할것이 없어 그냥더미. 소수점2자리설정해지
- }_getch(); break;
- }
- case 6: {
- string search; int len, cksum = 0;
- char query[100];
- cout << "관서명 :"; getline(cin, search); //검색할값 입력
- len = 8 - search.size(); //남은자리수계산
- if ((len > 0) && (len < 8)) { //만약에 자리수가 0개 남았거나 8개 미만라면
- if ((len % 2) != 0) search += " ";
- for (int i = 0; i < len / 2; i++) search += " ";
- }
- else if ((len <= 0) && (len >= 8)) { //만약에 남은 자리수가 0개미만 또는 8개이상이면
- cout << "잘못된 검색어" << endl; break;
- }
- while ((sql_row = mysql_fetch_row(sql_result)) != NULL) //다음행이 NULL일때 까지 반복.
- {
- if (search == sql_row[0]) //search와 sql_row[0]가 같은값이면
- {
- int tmp = atoi(sql_row[11]); //tmp에 DB상의 cksum값을 저장
- //cout << tmp << endl; //[디버깅]tmp값 확인
- sprintf_s(query, "delete from " DB_NAME "." DB_TABLE " where " DB_TABLE " . cksum = " "%d", tmp);
- //^ MySQL상에서 Delete명렁어 실행커멘드을 query에 저장
- query_stat = mysql_query(connection, query); //실행
- if (query_stat != 0) { //실행실패시 ERROR
- cout << stderr << " MySQL Connection Error : " << mysql_error(&conn) << endl;
- return 1;
- } cksum++; break; //cksum이 카운터되고 나옴.
- }
- } if (cksum == 0) { //cksum이 0이면
- cout << "잘못된 검색어" << endl;
- }mysql_free_result(sql_result); _getch(); break; //결과값을 메모리에서 제거
- }
- default: cout << "ERROR>잘못된 선택" << endl; break;
- }
- cout << endl;
- }
- //mysql_close(connection);
- //cout << "계속하실려면 아무키나 누르세요." << endl;
- //cout << "ByeBye" << endl;
- //_getch();
- //return 0;
- }
Add Comment
Please, Sign In to add comment