Бази даних / лаб10
.docxЛабораторна робота №9
Мета роботи: Набути навичок по написанню програм на мові С/С++ , які взаємодіють з сервером MySql.
Завдання:
Розробити для бази даних створеної в Л.Р. №1 клієнтську програму, яка підключатиметься до сервера БД та вносити нові записи.
Хід роботи
Завантажую VSC++, створюю новий консольний проект на мові С++, і вказую директорію для збереження проекту.
Завантажую з офіційного сайту MySql бібліотеки для роботи із базами даних
Копіюю завантажені файли .h у папку include, файли .lib в директорію lib а файл mysql.dll у папку з програмою.
У налаштуваннях проекту вказую для компілятора бібліотеку для виконання коректного лінкування.
Виконую написання тексту програми використовуючи функції для роботи із базами даних Mysql.
Код програми клієнта:
#include "stdafx.h"
#include <mysql\mysql.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void view (int i) {
char *s;
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (conn==NULL) {
printf("Error");
}
if (!mysql_real_connect(conn,"localhost","root",NULL,"other",NULL,NULL,0)) {
printf("Error2");
} else {
printf ("Ok\n") ;
}
switch(i) {
case 1: {
s="SELECT * FROM `land`";
break;
}
case 2: {
char query[4096];
const char *in = {"SELECT * FROM `land` WHERE `name_land`='%s'"} ;
char nam[35];
printf("Vvedit nazvu krainu\n");
scanf("%s\n",&nam);
sprintf(query,in,nam);
s=query;
break;
}
case 3: {
char query[4096];
const char *in = {"SELECT * FROM `land` WHERE `capital`='%s'"} ;
char nam[35];
printf("Vvedit nazvu stoluci\n");
scanf("%s",&nam);
sprintf(query,in,nam);
s=query;
break; }
case 4: {
char query[4096];
const char *in = {"SELECT * FROM `land` WHERE `name_land` LIKE '%s'"} ;
char nam[35];
printf("Vvedit krainu na bukvu\n");
scanf("%s",&nam);
sprintf(query,in,strcat(nam,"%"));
s=query;
break;
}
case 5: {
s="SELECT * FROM `land` ORDER BY `population` asc";
break;
}
case 6: {
char query[4096];
const char *in = {"SELECT * FROM `land` WHERE `population`>'%s'"} ;
char nam[35];
printf("Vvedit naselenya\n");
scanf("%s",&nam);
sprintf(query,in,strcat(nam,"%"));
s=query;
break;
}
}
if (mysql_query(conn,s)!=0) {
printf("Error3");
}
res= mysql_store_result(conn);
if (res==NULL) {
printf("Error4");
}
printf("id Nazva Stolic Naselenya Mova Valuta\n");
while ((row=mysql_fetch_row(res))!=NULL) {
printf("%s %s %s %s %s %s\n",row[0],row[1],row[2],row[3],row[4],row[5]);
}
mysql_free_result(res);
mysql_close(conn);
}
void add () {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (conn==NULL) {
printf("Error");
}
if (!mysql_real_connect(conn,"localhost","root",NULL,"other",NULL,NULL,0)) {
printf("Error2");
} else {
system("cls");
printf ("Ok\n") ;
}
char query[4096];
const char *in = {"insert into `land` values (%d,'%s','%s',%d,'%s','%s');"} ;
char land_name[25];
char cap[25];
char nat[30];
int id;
int pop;
char lang[25];
printf("Vvedit id\n");
scanf("%d",&id);
printf("Vvedit nazvu krainu\n");
scanf("%s",&land_name);
printf("Vvedit stolicu id\n");
scanf("%s",&cap);
printf("Vvedit naselenya\n");
scanf("%d",&pop);
printf("Vvedit movu\n");
scanf("%s",&lang);
printf("Vvedit Valutu\n");
scanf("%s",&nat);
sprintf(query,in,id,land_name,cap,pop,lang,nat);
if (mysql_query(conn,query) !=0) {
printf ("Error add!") ;
}
mysql_close(conn);
}
int _tmain(int argc, _TCHAR* argv[])
{
int k; int i=0;
printf("1-Vubirka\n2-Dodatu zapus\n");
scanf("%d",&k);
if (k==1) {
system("cls");
printf("1-Vuvid\n2-Vuvid po nazvi\n3-Po stoluci\n4-Na bukvu...\n5-Naselenya v poryadku spadanya\n6-Kraina naselenya yakoi bilshe...\n");
scanf("%d",&i);
view(i);
}
if (k==2) {
add();
}
getch();
return 0;
}
Запускаю сервер SQL.
Програма яка використовувалась для проектування БД – HeidiSQL (див. рисунок 1).
Рисунок 1 – Вікно HeidiSQL
Виконую компіляцію програми клієнта.
Після успішної компіляції на екран виводиться вікно програми рисунок 2.
Рисунок 2 – вікно програми клієнта
Використовуючи меню можна вибрати один із двох варіантів це: 1 – Продивитись базу (див. Рисунок 3). Або додати запис до бази рисунок 4.
Рисунок 3 – Меню розділу «Вибірка»
Рисунок 4 – Додавання запису в базу
Рисунок 5 – Вивід країн на «букву».
Рисунок 6 – Сортування за спадом кількості населення
Висновок: На Л.Р. я набув навичок по написанню програм на мові С/С++ , які взаємодіють з сервером MySql.