Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-08-2012, 15:44   #1
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
C# - query INSERT INTO non dà errori ma non inserisce il record

Buonasera a tutti,

premetto che sono nuovo nel campo della programmazione in C#. Mi è stato dato da fare un progetto che consiste nella gestione di un database con un'applicazione creata in c#. Utilizzo Visual Studio Express 2010 e SQL Server Express 2008.

Il problema sta nel fatto che l'esecuzione della query Insert, pur non dando errori, non mi inserisce all'interno del Database (chiamato Database1.mdf) i dati recuperati dalla form.

Ecco il codice:

private void cmdinsutente_Click(object sender, EventArgs e)
{

string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True";

SqlConnection conn = new SqlConnection(connString);

try
{
string codice = txtcod.Text;
string nome = txtnome.Text;
string cognome = txtcognome.Text;
string login = txtlogin.Text;
string pass = txtpass.Text;
string admin = cboadmin.Text;
string query = "INSERT INTO Utenti (Codice_Utente, Nome, Cognome, Login, Password, Administrator) VALUES (@codice, @nome, @cognome, @login, @pass, @admin)";
SqlCommand insert = new SqlCommand(query, conn);

insert.Parameters.AddWithValue("@codice", codice);
insert.Parameters.AddWithValue("@nome", nome);
insert.Parameters.AddWithValue("@cognome", cognome);
insert.Parameters.AddWithValue("@login", login);
insert.Parameters.AddWithValue("@pass", pass);
insert.Parameters.AddWithValue("@admin", admin);

conn.Open();
insert.ExecuteNonQuery();
}

catch (SqlException errore)
{
Console.WriteLine("Error: " + errore);
}
finally
{
conn.Close();
string message = "Vuoi continuare ad inserire utenti?";
string caption = "Form di richiesta";
var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo);
if (result == System.Windows.Forms.DialogResult.No)
{
this.Close();
}
else
{
txtcod.Text = "";
txtnome.Text = "";
txtcognome.Text = "";
txtlogin.Text = "";
txtpass.Text = "";
cboadmin.Text = "";
}
}

}
Cosa è sbagliato? Come risolvere il problema?

Grazie del vostro aiuto,

Luca.
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 15:54   #2
idoido
Senior Member
 
Iscritto dal: May 2008
Messaggi: 429
non ho visual studio sotto mano per fare delle prove, ma per prima cosa io controllerei la struttura della tabella, da come hai inserito i parametri i campi sono tutti varchar? la dimensione massima è abbastanza grande da contenere i valori che hai messo nella maschera?
hai una chiave primaria su quella tabella?
idoido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 19:01   #3
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
allora:
1) la tabella ha una primary key nel campo Codice_Utente.
2) alcuni campi non sono varchar, ma come fare per modificare il tipo? Anziché string mettere int o simili?
3) in che senso "la dimensione massima è abbastanza grande da contenere i valori che hai messo nella maschera"?

Grazie della risposta
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 19:09   #4
idoido
Senior Member
 
Iscritto dal: May 2008
Messaggi: 429
Quote:
Originariamente inviato da luca1293 Guarda i messaggi
allora:
1) la tabella ha una primary key nel campo Codice_Utente.
2) alcuni campi non sono varchar, ma come fare per modificare il tipo? Anziché string mettere int o simili?
3) in che senso "la dimensione massima è abbastanza grande da contenere i valori che hai messo nella maschera"?

Grazie della risposta
1) che tipo di primary key? magari hai impostato un int autoincrementale ad esempio
2) esatto, se il campo è un int, la variabile che assegni al @parametro deve essere di tipo int
3) es: campo varchar di lunghezza 5 (codice postale) e il valore della variabile è 001122 (lunghezza 6)
idoido è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2012, 22:45   #5
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
la primary key non è di tipo incrementale... si tratta di un semplice int assegnato al campo Codice_Utente. Riguardo invece la lunghezza dei varchar non ho impostato nulla, perciò non credo sia quel tipo di problema!!

Riguardo invece la conversione da stringa ad intero ho usato questa dichiarazione: "int x = Int32.Parse(myTextBox.Text);" ... quindi anche se dopo tengo lo stesso @parametro che avevo prima non mi dovrebbe dare più problemi... però comunque sia non mi aggiunge la riga
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2012, 08:38   #6
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
Per un errore mio non ho visto che anziché terminare il "try" entra nell'eccezione e mi dà errore. Non so però che tipo di errore...

Riposto il codice completo di tutto il progetto:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
public partial class frmutente : Form
{
public frmutente()
{
InitializeComponent();
}

private void cmdannulla_Click(object sender, EventArgs e)
{
this.Close();
}

private void cmdinsutente_Click(object sender, EventArgs e)
{
string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True;User Instance=True";

SqlConnection conn = new SqlConnection(connString);

try
{
int codice = Int32.Parse(txtcod.Text);
string nome = txtnome.Text;
string cognome = txtcognome.Text;
string login = txtlogin.Text;
string pass = txtpass.Text;
string admin = cboadmin.Text;
string query = "INSERT INTO Utenti (Codice_Utente, Nome, Cognome, Login, Password, Administrator) VALUES (@codice, @nome, @cognome, @login, @pass, @admin)";
SqlCommand insert = new SqlCommand(query, conn);

insert.Parameters.AddWithValue("@codice", codice);
insert.Parameters.AddWithValue("@nome", nome);
insert.Parameters.AddWithValue("@cognome", cognome);
insert.Parameters.AddWithValue("@login", login);
insert.Parameters.AddWithValue("@pass", pass);
insert.Parameters.AddWithValue("@admin", admin);

conn.Open();
insert.ExecuteNonQuery();
MessageBox.Show("Record inserted.", "Messaggio di inserimento", MessageBoxButtons.OK);
}

catch (SqlException errore)
{
MessageBox.Show("Errore!");
}
finally
{
conn.Close();
string message = "Vuoi continuare ad inserire utenti?";
string caption = "Form di richiesta";
var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo);
if (result == System.Windows.Forms.DialogResult.No)
{
this.Close();
}
else
{
txtcod.Text = "";
txtnome.Text = "";
txtcognome.Text = "";
txtlogin.Text = "";
txtpass.Text = "";
cboadmin.Text = "";
}
}
}

}
}


Chiedo aiuto perché non so più dove mettere mano..
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2012, 08:40   #7
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
Facendo il debug e mettendo i punti di interruzione, l'applicazione esce dal try alla riga dell'"insert.ExecuteNonQuery();".
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2012, 10:02   #8
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
questo è il messaggio di errore che si crea: http://imageshack.us/photo/my-images...aginejbxo.jpg/

idee??? Io non so proprio di che si tratta...

Grazie a tutti per il vostro aiuto!
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2012, 15:12   #9
idoido
Senior Member
 
Iscritto dal: May 2008
Messaggi: 429
dall'errore che hai postato, la riga che causa il problema è la conn.open
facendo una ricerca veloce su google il problema potrebbe essere il fatto che nella stringa di connessione usi |DataDirectory| per definire parte del percorso.
fai delle prove facendo riferimento a un percorso fisso (es: c:\db\db1.mdf)
idoido è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2012, 18:28   #10
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
Ho risolto il problema copiando e spostando il file Database.mdf nella cartella Bin\"Debug".
Lasciando tutto com'era ho quindi riprovato e mi ha eseguito tutta la funzione correttamente. Come mai questo? Scusa se chiedo, ma vorrei capire perché cambiando directory il tutto funzioni.
luca1293 è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2012, 03:22   #11
idoido
Senior Member
 
Iscritto dal: May 2008
Messaggi: 429
perché appunto nella stringa di connessione al db hai |DataDirectory|
ora stai compilando in debug, se compili in release vedrai che non funzionerà perché il db lo andrà a cercare dentro bin\release

comunque l'importante è che ora funzioni, poi man mano lo sistemi
idoido è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2012, 13:17   #12
luca1293
Member
 
Iscritto dal: Apr 2008
Messaggi: 84
Grazie mille del tuo aiuto, senza di te non avrei mai risolto.

Alla prossima!!!!
luca1293 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Oppo Find X10, X10 Pro Max e X10 E: conf...
Dal microscopio all'IA: un cervello di i...
Cyberpunk 2077 arriverà su Battle...
Altro che divieto: interi pallet di GeFo...
QNAPTS-h966TX, il NAS per chi fa editing...
Il trucco semplicissimo per installare W...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
Apple starebbe progettando i propri cont...
Niente borsa per OpenAI prima del 2027: ...
Meta potrebbe aver mostrato in anticipo ...
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: 13:36.


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