Inviare stringa a database remoto

di il
4 risposte

Inviare stringa a database remoto

Salve a tutti,

il problema era inviare una stringa ad un db posto su un server remoto.

Vista la mia ignoranza mi sono fatto aiutare da un amico ache se non programmatre VB.net che ha scritto il seguente codice 

 Private Function SendLav(_login As login, nomeLavorazione As String, tools As String)
     Dim urlLavorazioni As String = "http://000.000.00.000/api/v1/lav/create"
     Dim httpClientLavorazione As HttpClient = New HttpClient()

     'Imposta il token per l'utenza autenticata
     httpClientLavorazione.DefaultRequestHeaders.Authorization = New Headers.AuthenticationHeaderValue("Bearer", _login.data.token)

     'Creo la stringa completa da inviare tramite chiamata API
     Dim httpContentLavorazione = New StringContent("{""sku"": """ & nomeLav & """,""tools"":""" & tools & """}", Encoding.UTF8, "application/json")

     'Avvio la chiamta POST al server
     httpClientLavorazione.PostAsync(urlLavorazioni, httpContentLavorazione)


     'Leggo il risultato della chiamata post
     ' qui va in errore perche status code è <> 200 infatti è 500

     Dim responseLavorazioni As HttpResponseMessage

     responseLavorazioni = httpClientLavorazione.PostAsync(urlLavorazioni, httpContentLavorazione).Result
     If responseLavorazioni.StatusCode <> 200 Then

         Dim responseSendLavorazioni As Object = JsonConvert.DeserializeObject(Of Object)(responseLavorazioni.Content.ReadAsStringAsync().Result)
         MsgBox(responseSendLavorazioni.ToString)

     End If

 End Function

so che avreste bisogno di più info ma non so da che parte iniziare. 

Il problema è che a volte in maniera apparenteme casuale si verifica il seguente errore

dice che il valore  è duplicato ma in realta NON è così anche perche quando tento di inviare un file gia inviato l'errore è il seguente:

La cosa “particolare” è che se invio e mi compare il primo errore il file comunque me lo invia correttamente.

Altra cosa che ho notato è che quando va in erorre il

responseLavorazioni.StatusCode è sempre 500

Grazie veramente di cuore a tutti.

4 Risposte

  • Re: Inviare stringa a database remoto

    Mettici anche la struttura delle tabelle implicate, comprensiva di indici, vincoli vari, ed eventuali trigger correlati con le tabelle usate

    Altrimenti e' impossibile tentare di consigliare qualsiasi cosa

  • Re: Inviare stringa a database remoto

    
    
    -- Dump della struttura di tabella gestioneutensili.lavorazioni
    CREATE TABLE IF NOT EXISTS `lavorazioni` (
      `id` bigint unsigned NOT NULL AUTO_INCREMENT,
      `sku` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Codice univoco della lavorazioni',
      `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nome della lavorazione',
      `gestito` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'TRUE se la lavorazione è stata gestita',
      `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `lavorazioni_sku_unique` (`sku`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2241 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
    -- Dump della struttura di tabella gestioneutensili.lavorazioni_tools
    CREATE TABLE IF NOT EXISTS `lavorazioni_tools` (
      `id` bigint unsigned NOT NULL AUTO_INCREMENT,
      `lavorazioni_id` bigint unsigned NOT NULL,
      `tools_sku` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Codice univoco dell''utensile',
      `to_cup_machine` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Numero della tazza in cui caricare l''utensile',
      PRIMARY KEY (`id`),
      UNIQUE KEY `lavorazioni_tools_lavorazioni_id_tools_sku_unique` (`lavorazioni_id`,`tools_sku`),
      CONSTRAINT `lavorazioni_tools_lavorazioni_id_foreign` FOREIGN KEY (`lavorazioni_id`) REFERENCES `lavorazioni` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB AUTO_INCREMENT=10179 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
    -- Dump della struttura di tabella gestioneutensili.tools
    CREATE TABLE IF NOT EXISTS `tools` (
      `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id univoco',
      `sku` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Codice univoco dell''utensile',
      `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Nome dell''utensile',
      `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Descrizione dell''utensile',
      `to_rack_number` enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `cup_machine` enum('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Posizione in macchina. 0 = non è in macchina',
      `drawer` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'Identificativo del cassetto dove è alloggiato l''utensile nel magazzino',
      `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `qty` int unsigned NOT NULL DEFAULT '0' COMMENT 'Q.ta in magazzino',
      `qty_min` int unsigned NOT NULL DEFAULT '0' COMMENT 'Q.ta minima in magazzino, utile per gestire gli allarmi dell scorte minime',
      PRIMARY KEY (`id`),
      UNIQUE KEY `tools_sku_unique` (`sku`),
      UNIQUE KEY `tools_to_rack_number_unique` (`to_rack_number`),
      UNIQUE KEY `tools_cup_machine_unique` (`cup_machine`),
      UNIQUE KEY `tools_drawer_unique` (`drawer`),
      KEY `tools_name_index` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=220 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
    
  • Re: Inviare stringa a database remoto

    L'invio  del comando sembra essere eseguito due volte, per quale motivo?

    Sul messaggio di errore le stringhe in values appaiono senza apici o doppi apici, sei sicuro che non servano?

    Ma fisicamente chi e' che interroga il db?

    Voglio dire, il codice sopra e' quello che usi per inviare la stringa ad un web server, ma quando verra' ricevuta la stringa (immagino) diventi un file di testo

    Hai confrontato il comando che parte, rispetto al contenuto del file di testo che arriva sul web server?

    Come fai ad inviare il comando verso il db server?

    Di che db server si tratta esattamente?

    Se lanci il comando che si trovera' dentro al file ricevuto dal web server usando il manager standard del db (ad esempio per Sql Server c'e'  Sql Server Management Studio) il comando viene eseguito oppure restituisce qualche errore?

  • Re: Inviare stringa a database remoto

    Grazie amorosik,

    Per le prime 2 domande direi che non ci dovrebbero essere problemi altrimenti il andrebbe in errore ogni volta.

    Per le altre domande ho bisogno di tempo,

    devo sentire il mio amico.

    Vi aggiornerò appena possibile.

    Grazie a tutti per il momento!

Devi accedere o registrarti per scrivere nel forum
4 risposte