Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 160

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Β Β return 0;

Β } else {

Β  res_ptr = mysql_use_result(&my_connection);

Β Β if (res_ptr) {

Β Β  if ((mysqlrow = mysql_fetch_row(res_ptr))) {

Β Β  Β sscanf(mysqlrow[0], "%d", &new_cd_id);

Β Β  }

Β Β  mysql_free_result(res_ptr);

Β  }

He стоит Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ…, Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диски Π² это ΠΆΠ΅ врСмя, ΠΈ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ID; Π‘Π£Π Π‘Π” MySQL Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ присвоСнный ID для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, поэтому, Π΄Π°ΠΆΠ΅ Ссли Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вставило ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диск ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ID, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ вашСй строкС, Π° Π½Π΅ строкС, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

И послСднСС, Π½ΠΎ Π½Π΅ ΠΏΠΎ стСпСни ваТности, установитС ID вновь Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ строки ΠΈ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ:

Β  *cd_id = new_cd_id;

Β  if (new_cd_id != -1) return 1;

Β Β return 0;

Β }

} /* add_cd */

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотритС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

get_artist_id
; процСсс ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° вставку записи ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС:

/* Поиск ΠΈΠ»ΠΈ созданиС artist_id для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ строки */

static int get_artist_id(char *artist) {

Β MYSQL_RES *res_ptr;

Β MYSQL_ROW mysqlrow;

Β int res;

Β char qs[250];

Β char is[250];

Β char es[250];

Β int artist_id = -1;

Β /* Он ΡƒΠΆΠ΅ сущСствуСт? */

Β mysql_escape string(es, artist, strlen(artist));

Β sprintf(qs, "SELECT id FROM artist WHERE name = '%s'", es);

Β res = mysql_query(&my_connection, qs);

Β if (res) {

Β  fprintf(stderr, "SELECT error: %s\n", mysql_error(&my_connection));

Β } else {

Β  res_ptr = mysql_store_result(&my_connection);

Β Β if (res_ptr) {

Β Β  if (mysqr_num_rows(res_ptr) > 0) {

Β Β  Β if (mysqlrow = mysql_fetch_row(res_ptr)) {

Β  Β Β  sscanf(mysqlrow[0], "%d", &artist_id);

Β Β Β  }

Β Β  }

Β Β Β mysql_free_result(res_ptr);

Β Β }

Β }

Β if (artist_id != -1) return artist_id;

Β sprintf(is, "INSERT INTO artist(name) VALUES ('%s')", es);

Β res = mysql_query(&my_connection, is);

Β if (res) {

Β  fprintf(stderr, "Insert error %d: %s\n",

Β Β  mysql_errno(&my_connection), mysql_error(&my_connection));

Β Β return 0;

Β }

Β res = mysql_query(&my_connection, "SELECT LAST_INSERT_ID()");

Β if (res) {

Β  printf("SELECT error: %s\n", mysql_error(&my_connection));

Β Β return 0;

Β } else {

Β  res_ptr = mysql_use_result(&my_connection);

Β Β if (res_ptr) {

Β Β  if ((mysqlrow = mysql_fetch_row(res_ptr))) {

Β Β  Β sscanf(mysqlrow[0], "%d", &artist_id);

Β Β  }

Β Β  mysql_free_result(res_ptr);

Β  }

Β }

Β return artist_id;

} /* get_artist_id */

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ вставкС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄ΠΎΡ€ΠΎΠΆΠΊΠ°Ρ… для вашСго ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диска. И снова Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Π² названиях Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ:

int add_tracks(struct current_tracks_st *tracks) {

Β int res;

Β char is[250];

Β char es[250];

Β int i;

Β if (!dbconnected) return 0;

Β i = 0;

Β while (tracks->track[i][0]) {

Β  mysql_escape_string(es, tracks->track[i], strlen(tracks->track[i]));

Β Β sprintf(is,

Β Β  "INSERT INTO track(cd_id, track_id, title) VALUES(%d, %d, '%s')",

Β Β tracks->cd_id, i + 1, es);

Β Β res = mysql_query(&my_connection, is);

Β  if (res) {

Β Β  fprintf(stderr, "Insert error %d: %s\n",

Β Β  mysql_errno(&my_connection), mysql_error(&my_connection));

Β  Β return 0;

Β  }

Β  i++;

Β }

Β return 1;

} /* add tracks */

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ ID. Π‘ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° опСрация объСдинСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для извлСчСния ID исполнитСля Π²ΠΎ врСмя получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ID диска. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: систСмы управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ эффСктивно Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ слоТныС запросы, поэтому Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π‘Π£Π Π‘Π”, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ запрос Π½Π° языкС SQL. Π•ΡΡ‚ΡŒ шанс ΡΠ±Π΅Ρ€Π΅Ρ‡ΡŒ собствСнныС силы, Π½Π΅ тратя ΠΈΡ… Π½Π° написаниС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ эффСктивно, Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ² Π‘Π£Π Π‘Π” Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ объСм Ρ€Π°Π±ΠΎΡ‚Ρ‹.