0% found this document useful (0 votes)
34 views

Csprog 2 Workingna

This C program connects to a MySQL database and allows users to perform CRUD (create, read, update, delete) operations on student records stored in a database table. The main function initializes the MySQL connection and displays a menu for adding, editing, deleting, searching, and listing student records. Functions are defined to implement each database operation by constructing and executing the necessary SQL queries.

Uploaded by

Aaron Coronia
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views

Csprog 2 Workingna

This C program connects to a MySQL database and allows users to perform CRUD (create, read, update, delete) operations on student records stored in a database table. The main function initializes the MySQL connection and displays a menu for adding, editing, deleting, searching, and listing student records. Functions are defined to implement each database operation by constructing and executing the necessary SQL queries.

Uploaded by

Aaron Coronia
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

#include <stdio.

h>
#include <stdlib.h>
#include <mysql.h>
#include <string.h>

void add_record(MYSQL *conn);


void edit_record(MYSQL *conn);
void delete_record(MYSQL *conn);
void search_record(MYSQL *conn);
void list_records(MYSQL *conn);

int main()
{
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
int choice = 0;

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, "localhost", "root", NULL, "database0", 0, NULL,


0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

while (choice != 6) {
printf("\n1. Add record\n");
printf("2. Edit record\n");
printf("3. Delete record\n");
printf("4. Search record\n");
printf("5. List records\n");
printf("6. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);

switch (choice) {
case 1:
add_record(conn);
break;
case 2:
edit_record(conn);
break;
case 3:
delete_record(conn);
break;
case 4:
search_record(conn);
break;
case 5:
list_records(conn);
break;
case 6:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice. Please try again.\n");
break; // added break to default case
}
}

mysql_close(conn);

return 0;
}

void add_record(MYSQL *conn)


{
char query[1024];
char studname[50], course[50], year[5], address[100], sex[10], dob[12],
contact[20], email[50];
int ret;

getchar(); // consume newline character left by previous scanf


printf("\nEnter student name (Last to First): ");
fgets(studname, sizeof(studname), stdin);
studname[strcspn(studname, "\n")] = 0; // remove trailing newline
printf("Enter course: ");
fgets(course, sizeof(course), stdin);
course[strcspn(course, "\n")] = 0; // remove trailing newline
printf("Enter year: ");
fgets(year, sizeof(year), stdin);
year[strcspn(year, "\n")] = 0; // remove trailing newline
printf("Enter address: ");
scanf("%99s", address);
printf("Enter sex: ");
scanf("%9s", sex);
printf("Enter date of birth (YYYY-MM-DD): ");
scanf("%11s", dob);
printf("Enter contact number: ");
scanf("%19s", contact);
printf("Enter email address: ");
scanf("%49s", email);

char confirm;
printf("\nIs all the entered information correct? (y/n): ");
scanf(" %c", &confirm);
if (confirm == 'y' || confirm == 'Y') {
sprintf(query, "INSERT INTO students (name, course, year, address, sex,
dob, contact, email) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
studname, course, year, address, sex, dob, contact, email);
ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record added successfully!\n");
}
} else {
printf("Record not added.\n");
}
}

void edit_record(MYSQL *conn)


{
char query[1024];
char studname[50], course[50], year[5], address[100], sex[10], dob[12],
contact[20], email[50];
int id, ret;
printf("\nEnter student id to edit: ");
scanf("%d", &id);

sprintf(query, "SELECT * FROM students WHERE id = %d", id);

ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return;
}

MYSQL_RES *result = mysql_store_result(conn);


MYSQL_ROW row = mysql_fetch_row(result);

if (row == NULL) {
printf("Record not found!\n");
return;
}

getchar(); // consume newline character left by previous scanf


printf("\nEnter new student name: ");
fgets(studname, sizeof(studname), stdin);
studname[strcspn(studname, "\n")] = 0; // remove trailing newline
printf("Enter new course: ");
scanf("%49s", course);
printf("Enter new year: ");
scanf("%4s", year);
printf("Enter new address: ");
scanf("%99s", address);
printf("Enter new sex: ");
scanf("%9s", sex);
printf("Enter new date of birth (YYYY-MM-DD): ");
scanf("%11s", dob);
printf("Enter new contact number: ");
scanf("%19s", contact);
printf("Enter new email address: ");
scanf("%49s", email);

sprintf(query, "UPDATE students SET name='%s', course='%s', year='%s',


address='%s', sex='%s', dob='%s', contact='%s', email='%s' WHERE id=%d",
studname, course, year, address, sex, dob, contact, email, id);

ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record updated successfully!\n");
}

mysql_free_result(result);
}

void delete_record(MYSQL *conn)


{
char query[1024];
int id, ret;
printf("\nEnter student id to delete: ");
scanf("%d", &id);
sprintf(query, "DELETE FROM students WHERE id=%d", id);
ret = mysql_query(conn, query);
if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record deleted successfully!\n");
}
}

void search_record(MYSQL *conn)


{
char query[1024];
char keyword[50];
int ret;
printf("\nEnter keyword to search: ");
scanf("%49s", keyword); // limit input to 49 characters to avoid buffer
overflow
sprintf(query, "SELECT * FROM students WHERE name LIKE '%%%s%%' OR course LIKE
'%%%s%%' OR year LIKE '%%%s%%' OR address LIKE '%%%s%%' OR sex LIKE '%%%s%%' OR dob
LIKE '%%%s%%' OR contact LIKE '%%%s%%' OR email LIKE '%%%s%%'",
keyword, keyword, keyword, keyword, keyword, keyword, keyword,
keyword);
ret = mysql_query(conn, query);
if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return;
}
MYSQL_RES *result = mysql_store_result(conn);
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
int i = 0;
while (i < num_fields) {
printf("%s\t", row[i] ? row[i] : "NULL");
i++;
}
printf("\n");
}
mysql_free_result(result);
}

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <string.h>

void add_record(MYSQL *conn);


void edit_record(MYSQL *conn);
void delete_record(MYSQL *conn);
void search_record(MYSQL *conn);
void list_records(MYSQL *conn);

int main()
{
MYSQL *conn;
MYSQL_RES *result;
MYSQL_ROW row;
int choice = 0;

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, "localhost", "root", NULL, "database0", 0, NULL,


0))
{
fprintf(stderr, "%s\n", mysql_error(conn));
exit(1);
}

while (choice != 6) {
printf("\n1. Add record\n");
printf("2. Edit record\n");
printf("3. Delete record\n");
printf("4. Search record\n");
printf("5. List records\n");
printf("6. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);

switch (choice) {
case 1:
add_record(conn);
break;
case 2:
edit_record(conn);
break;
case 3:
delete_record(conn);
break;
case 4:
search_record(conn);
break;
case 5:
list_records(conn);
break;
case 6:
printf("Goodbye!\n");
break;
default:
printf("Invalid choice. Please try again.\n");
break; // added break to default case
}
}

mysql_close(conn);

return 0;
}

void add_record(MYSQL *conn)


{
char query[1024];
char studname[50], course[50], year[5], address[100], sex[10], dob[12],
contact[20], email[50];
int ret;
getchar(); // consume newline character left by previous scanf
printf("\nEnter student name (Last to First): ");
fgets(studname, sizeof(studname), stdin);
studname[strcspn(studname, "\n")] = 0; // remove trailing newline
printf("Enter course: ");
fgets(course, sizeof(course), stdin);
course[strcspn(course, "\n")] = 0; // remove trailing newline
printf("Enter year: ");
fgets(year, sizeof(year), stdin);
year[strcspn(year, "\n")] = 0; // remove trailing newline
printf("Enter address: ");
fgets(address, sizeof(address), stdin);
address[strcspn(address, "\n")] = 0; // remove trailing newline
printf("Enter sex: ");
fgets(sex, sizeof(sex), stdin);
sex[strcspn(sex, "\n")] = 0; // remove trailing newline
printf("Enter date of birth (YYYY-MM-DD): ");
fgets(dob, sizeof(dob), stdin);
dob[strcspn(dob, "\n")] = 0; // remove trailing newline
printf("Enter contact number: ");
fgets(contact, sizeof(contact), stdin);
contact[strcspn(contact, "\n")] = 0; // remove trailing newline
printf("Enter email address: ");
fgets(email, sizeof(email), stdin);
email[strcspn(email, "\n")] = 0; // remove trailing newline

char confirm;
printf("\nIs all the entered information correct? (y/n): ");
scanf(" %c", &confirm);
if (confirm == 'y' || confirm == 'Y') {
sprintf(query, "INSERT INTO students (name, course, year, address, sex,
dob, contact, email) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
studname, course, year, address, sex, dob, contact, email);
ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record added successfully!\n");
}
} else {
printf("Record not added.\n");
}
}

void edit_record(MYSQL *conn)


{
char query[1024];
char studname[50], course[50], year[5], address[100], sex[10], dob[12],
contact[20], email[50];
int id, ret;
printf("\nEnter student id to edit: ");
scanf("%d", &id);

sprintf(query, "SELECT * FROM students WHERE id = %d", id);

ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return;
}

MYSQL_RES *result = mysql_store_result(conn);


MYSQL_ROW row = mysql_fetch_row(result);

if (row == NULL) {
printf("Record not found!\n");
return;
}

getchar(); // consume newline character left by previous scanf


printf("\nEnter new student name: ");
fgets(studname, sizeof(studname), stdin);
studname[strcspn(studname, "\n")] = 0; // remove trailing newline
printf("Enter new course: ");
scanf("%49s", course);
printf("Enter new year: ");
scanf("%4s", year);
printf("Enter new address: ");
scanf("%99s", address);
printf("Enter new sex: ");
scanf("%9s", sex);
printf("Enter new date of birth (YYYY-MM-DD): ");
scanf("%11s", dob);
printf("Enter new contact number: ");
scanf("%19s", contact);
printf("Enter new email address: ");
scanf("%49s", email);

sprintf(query, "UPDATE students SET name='%s', course='%s', year='%s',


address='%s', sex='%s', dob='%s', contact='%s', email='%s' WHERE id=%d",
studname, course, year, address, sex, dob, contact, email, id);

ret = mysql_query(conn, query);

if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record updated successfully!\n");
}

mysql_free_result(result);
}

void delete_record(MYSQL *conn)


{
char query[1024];
int id, ret;
printf("\nEnter student id to delete: ");
scanf("%d", &id);
sprintf(query, "DELETE FROM students WHERE id=%d", id);
ret = mysql_query(conn, query);
if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
} else {
printf("Record deleted successfully!\n");
}
}

void search_record(MYSQL *conn)


{
char query[1024];
char keyword[50];
int ret;
printf("\nEnter keyword to search: ");
scanf("%49s", keyword); // limit input to 49 characters to avoid buffer
overflow
sprintf(query, "SELECT * FROM students WHERE name LIKE '%%%s%%' OR course LIKE
'%%%s%%' OR year LIKE '%%%s%%' OR address LIKE '%%%s%%' OR sex LIKE '%%%s%%' OR dob
LIKE '%%%s%%' OR contact LIKE '%%%s%%' OR email LIKE '%%%s%%'",
keyword, keyword, keyword, keyword, keyword, keyword, keyword,
keyword);
ret = mysql_query(conn, query);
if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return;
}
MYSQL_RES *result = mysql_store_result(conn);
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
int i = 0;
while (i < num_fields) {
printf("%s\t", row[i] ? row[i] : "NULL");
i++;
}
printf("\n");
}
mysql_free_result(result);
}

void list_records(MYSQL *conn)


{
char query[1024];
int ret;
sprintf(query, "SELECT * FROM students");
ret = mysql_query(conn, query);
if (ret != 0) {
fprintf(stderr, "Error: %s\n", mysql_error(conn));
return;
}
MYSQL_RES *result = mysql_store_result(conn);
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
int i = 0;
while (i < num_fields) {
printf("%s\t", row[i] ? row[i] : "NULL");
i++;
}
printf("\n");
}
mysql_free_result(result);
}

You might also like