Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Бази даних / лаб10

.docx
Скачиваний:
37
Добавлен:
05.03.2016
Размер:
252.8 Кб
Скачать

Лабораторна робота №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.

Соседние файлы в папке Бази даних