Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-01-2012, 12:26   #1
lorien3
Member
 
L'Avatar di lorien3
 
Iscritto dal: Sep 2006
Messaggi: 72
[C] Come usare Prepared Statement con "mysql.h"

salve a tutti,
vorrei riuscire a capire come poter utilizzare i prepared statement... ho letto la documentazione ma sinceramente anche seguendo il loro codice ci ho capito ben poco... cmq vi metto un codice di esempio per riuscire a capire dove sbaglio
Codice:
//mi connetto al database
conn = mysql_init(NULL);

//preparo la query
sprintf(myquery,"SELECT password FROM accesso WHERE id_doc=?");

//inizializzo lo statement
stmt = mysql_stmt_init(conn);
mysql_stmt_prepare(stmt, myquery, strlen(myquery))

//conto i parametri, in questo caso 1 solo, passaggio fatto solo per la verifica
param_count= mysql_stmt_param_count(stmt);

//preparo l'unico parametro che è una stringa
memset(bind, 0, sizeof(bind));
bind[0].buffer_type= MYSQL_TYPE_STRING;
bind[0].buffer= (char *)str_data;
bind[0].buffer_length= 10;
bind[0].is_null= 0;
bind[0].length= &str_length;
mysql_stmt_bind_param(stmt, bind)

//setto il parametro (anche se questo passaggio a senso dovrebbe essere fatto prima, ma così dice la documentazione)
strncpy(str_data, "123", 10); /* string  */
str_length= strlen(str_data);

//eseguo la query
mysql_stmt_execute(stmt)

//prendo i risultati
res = mysql_use_result(conn);

//li stampo
printf("MySQL Tables in mysql database:\n");
while ((row = mysql_fetch_row(res)) != NULL)
   printf("%s \n", row[1]);
/* close connection */
mysql_free_result(res);
mysql_close(conn);
il grosso problema è che quando vado a stampare mi da segmentation fault proprio perchè non ci sono risultati...

se riuscite a darmi una mano ve ne sarei molto molto grato!!!
lorien3 è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2012, 13:11   #2
lorien3
Member
 
L'Avatar di lorien3
 
Iscritto dal: Sep 2006
Messaggi: 72
Risolto!!!
Questo è il link dove ho trovato un esempio che mi ha illuminato... praticamente sbagliavo a prendere i risultati... devono anch'essi essere trattati come parametri bind...
dato che ho fatto la prova solo con degli int spero che nn sorgano problemi con le stringhe
lorien3 è offline   Rispondi citando il messaggio o parte di esso
Old 05-01-2012, 16:25   #3
lorien3
Member
 
L'Avatar di lorien3
 
Iscritto dal: Sep 2006
Messaggi: 72
Sembrava Risolto...
sono riuscito a scrivere e a far andare il codice ma non capisco per quale motivo mi da 0 risultati quando invece nel mio database ce ne sono 2...

here is my code
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <mysql/mysql.h>

#define STRING_SIZE 50

#define SELECT_SAMPLE "select p.id_paz from pazienti p where p.id_doc = ?"

int main(void)
{
MYSQL *conn;
MYSQL_STMT *stmt;
MYSQL_BIND    pbind[1],result[1]; /* results */
unsigned long length;
int           row_count;
char          login[STRING_SIZE];
my_bool       is_null;

//MYSQL_BIND    pbind[2]; /* parameters */
unsigned long plength;
char *pdata;
my_bool      p_is_null;


 // Open Database
const char *server = "localhost";
   char *user = "root";
   char *password = "password"; /* set me first */
   char *database = "ProgettoSi";
conn = mysql_init(NULL);
   /* Connect to database */
   if (!mysql_real_connect(conn, server,
         user, password, database, 0, NULL, 0)) {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
	}

 // Allocate statement handler
 stmt = mysql_stmt_init(conn);
if (!stmt)
{
  fprintf(stderr, " mysql_stmt_init(), out of memory\n");
  exit(0);
} 
if (mysql_stmt_prepare(stmt, SELECT_SAMPLE, strlen(SELECT_SAMPLE)))
{
  fprintf(stderr, " mysql_stmt_prepare(), SELECT failed\n");
  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  exit(0);
} 
fprintf(stdout, " prepare, SELECT successful\n");

plength = STRING_SIZE * sizeof(char);
p_is_null = 0;
pdata = (char*)malloc( STRING_SIZE * sizeof(char) );

/* STRING PARAMETER */
pbind[0].buffer_type= MYSQL_TYPE_STRING;
pbind[0].buffer= (char *)pdata;
pbind[0].buffer_length=STRING_SIZE * sizeof(char);
pbind[0].is_null= &p_is_null;
pbind[0].length= &plength;


if( mysql_stmt_bind_param( stmt, pbind ) ) {
   fprintf( stderr, " mysql_stmt_bind_param() failed\n" );
   fprintf( stderr, " %s\n", mysql_stmt_error( stmt ) );
   exit(0);
}
mysql_real_escape_string( conn, pdata, "123", strlen("123")*sizeof(char) );
plength = strlen( pdata ) + 1;

printf( "Executing query with parameters %s. \n", pdata);
/* Execute the SELECT query */
if (mysql_stmt_execute(stmt))
{
  fprintf(stderr, " mysql_stmt_execute(), failed\n");
  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  exit(0);
}

/* Bind the result buffers for all 4 columns before fetching them */

result[0].buffer_type= MYSQL_TYPE_STRING;
result[0].buffer= (char *)login;
result[0].buffer_length= STRING_SIZE;
result[0].is_null= &is_null;
result[0].length= &length;

if (mysql_stmt_bind_result(stmt, result))
{
  fprintf(stderr, " mysql_stmt_bind_result() failed\n");
  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  exit(0);
}

if (mysql_stmt_store_result(stmt))
{
  fprintf(stderr, " mysql_stmt_store_result() failed\n");
  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  exit(0);
}

row_count= 0;
fprintf(stdout, "Fetching results ...\n");
while (!mysql_stmt_fetch(stmt))
{
  row_count++;
  fprintf(stdout, "  row %d\n", row_count);

/* column 2 */
  fprintf(stdout, "   column2 (string)   : ");
  if (is_null)
    fprintf(stdout, " NULL\n");
  else
    fprintf(stdout, " %s(%ld)\n", login, length);

}

/* Validate rows fetched */
fprintf(stdout, " total rows fetched: %d\n", row_count);
/* Close the statement */
if (mysql_stmt_close(stmt))
{
  fprintf(stderr, " failed while closing the statement\n");
  fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  exit(0);
}
return 0;
}
lorien3 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v