int main(int argc, char *argv[]) { if(argc < 3) die("Usage: ex17 <dbfile> <action> [action params]"); char *filename = argv[1]; char action = argv[2][0]; struct Connection *conn; int id; switch(action) { case 'c': conn = Database_open(filename, action); Database_create(conn); Database_write(conn); break; case 'f': if(argc != 4) die("Need a name to find"); conn = Database_open(filename, action); Database_find_name(conn, argv[3]); Database_close(conn); break; case 'g': if(argc > 3) id = atoi(argv[3]); if(id >= MAX_ROWS) die("The are already too many records."); if(argc != 4) die("Need an ID to get"); conn = Database_open(filename, action); Database_get(conn, id); Database_close(conn); break; case 'a': if(argc > 3) id = atoi(argv[3]); //if(argc != 5) die("Need name, and email to set."); conn = Database_open(filename, action); Database_add(conn, argv[4], argv[5]); Database_write(conn); Database_close(conn); break; case 's': if(argc > 3) id = atoi(argv[3]); if(id >= MAX_ROWS) die("The are already too many records."); if(argc != 6) die("Need id, name, and email to set."); conn = Database_open(filename, action); Database_set(conn, id, argv[4], argv[5]); Database_write(conn); Database_close(conn); break; case 'd': if(argc > 3) id = atoi(argv[3]); if(id >= MAX_ROWS) die("The are already too many records."); if(argc != 4) die("Need an ID to delete"); conn = Database_open(filename, action); Database_delete(conn, id); Database_write(conn); Database_close(conn); break; case 'l': conn = Database_open(filename, action); Database_list(conn); Database_close(conn); break; case 'u': if(argc > 3) id = atoi(argv[3]); if(id >= MAX_ROWS) die("The are already too many records."); if(argc != 6) die("Need id, name, and email to set."); conn = Database_open(filename, action); Database_update(conn, id, argv[4], argv[5]); Database_write(conn); Database_close(conn); break; case 'z': conn = Database_open(filename, action); printf("%d\n", Database_nrows(conn)); Database_close(conn); break; default: die("Invalid action, only: c=create, a=add, g=get, f=find, s=set, d=delete, l=list, u=update, z=size"); break; } return 0; }
int main(int argc, char *argv[]) { if (argc < 3) die("USAGE: ex17 <dbfile> <action> [action params]", NULL); char *filename = argv[1]; char action = argv[2][0]; struct Connection *conn = Database_open(filename, action); int id = 0; if (argc > 3) id = atoi(argv[3]); if (id >= MAX_ROWS) die("There's not that many records.", NULL); switch (action) { case 'c': Database_create(conn); Database_write(conn); break; case 'g': if (argc !=4) die("Need an id to get.", NULL); Database_get(conn, id); break; case 's': if (argc != 6) die("Need id, name, email to set.", NULL); Database_set(conn, id, argv[4], argv[5]); Database_write(conn); break; case 'd': if (argc != 4) die("Need id to delete.", NULL); Database_delete(conn, id); Database_write(conn); break; case 'f': if (argc != 5) die("Need attribute, value to find", NULL); char attribute = argv[3][0]; char *value = argv[4]; if (attribute == 'e') { Database_find_email(conn, value); } else { Database_find_name(conn, value); } break; case 'l': Database_list(conn); break; default: die("Invalid action, only: c=create, g=get, f=find, s=set, d=del, l=list.", NULL); } Database_close(conn); return 0; }