Verifica dati e inserimento in db

sabato 14 giugno 2014 - 09.55
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio Express  |  SQL Server Express  |  Chrome  |  HTML 5

Cyberking Profilo | Junior Member

Ciao a tutti,
qualche settimana fa ho scritto un post, (http://www.dotnethell.it/forum/messages.aspx?ThreadID=44989)

per un problema che ho con una pagina e non riesco a risolvere.
Il problema mi sembra abbastanza semplice, ovvero sarebbe semplice se conoscessi bene .net, cosa che sto cercando di imparare
Praticamente devo inserire i dati in una tabella chiamata foto
Quando carico la foto passo anche un indirizzo email, che prima voglio verificare se si trova in una tabella anagrafica
Se è presente mi tiro fuori l'id del recordset, altrimenti inserisco prima l'email nella tabella anagrafica poi mi tiro fuori il suo id e poi quindi vado a scrivere nella tabella foto
Conoscendo asp classico, a mio avviso sembra facile, ovvero farei una select, poi un controllo se il recordset è .EOF altrimenti se non c'è record lo inserisco altrimenti mi tiro fuori l'id
Ecco nella mia pagina aspx già nel tirare fuori l'id sto avendo un bel pò di problemi ricevo l'errore nel debug su idUtente = (Int32)cmd.ExecuteScalar();

string sql = "select idUtente from utenti where mail='"+ Email +"'";
cmd = new OleDbCommand(sql, conn);

conn.Open();
try
{
int idUtente=0;
idUtente = (Int32)cmd.ExecuteScalar();
MyContentType.InnerHtml=idUtente.ToString();


potete farmi qualche suggerimento
Grazie
http://www.cyberkings.it

alx_81 Profilo | Guru

>Ciao a tutti,
ciao

>potete farmi qualche suggerimento
ti allego un esempio veloce, che dovrai completare:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Grazie
di nulla!
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Cyberking Profilo | Junior Member

Grazie mille!!!
Provo e ti faccio sapere
http://www.cyberkings.it

Cyberking Profilo | Junior Member

Ciao Alessandro,
grazie al tuo codice sono riuscito a fare un insert nel db e a modificare anche un pò il mio codice
ho avuto due problemi
il primo se l'id non c'è perchè l'utente non è presente
id = (int)cmd.ExecuteScalar();

mi dice "determina se l'oggetto è null prima di chiamare il metodo"

il secondo errore è nel tuo codice che mi hai scritto qui
id = (int?)cmd.ExecuteScalar();

Messaggio di errore del compilatore: CS0266: Impossibile convertire in modo implicito il tipo 'int?' in 'int'. È presente una conversione esplicita. Probabilmente manca un cast.


io l'ho modificato come hai visto su
non so se tu hai scritto in vb perchè mi dava errore anche sul var

io sto scrivendo così per ora
per ora grazie
provo a cercare in rete se trovo come gestire quel null
se leggi prima che trovo qualcosa e mi dai qualche suggerimento ti ringrazio
viao

SqlConnection conn = null;

conn = new SqlConnection("Server=User-PC\\SQLEXPRESS;Database=fb;User Id=andrea; Password=123;");

using (conn)
{
conn.Open();

SqlCommand cmd = null;
cmd = new SqlCommand("select TOP 1 idUtente from utenti where mail=@mail", conn);

using (cmd)
{
cmd.Parameters.AddWithValue("@mail", Email);
int id = 0;
id = (int)cmd.ExecuteScalar();
MyContentType.InnerHtml = id.ToString();

if (id == null)
{
// insert new id
// utilizza ancora una using per effettuare il comando di insert
}

// get id
// fai un'altra using per tornare l'id appena inserito (puoi anche farlo direttamente nella insert, e allora questa get entra nell'else che ho omesso)

// inserisci la foto con tutti i dati.
}

http://www.cyberkings.it

Cyberking Profilo | Junior Member

ho risolto per ora in questo modo


int idUtente ;
if (cmd.ExecuteScalar() == null)
{
idUtente = 0;
}
else
{
idUtente = (Int32)cmd.ExecuteScalar();
}
MyContentType.InnerHtml = idUtente.ToString();


if (idUtente == 0)
{



mi resta da capire come mai hai scritto
id =(int?)cmd.ExecuteScalar();

Grazie
http://www.cyberkings.it

alx_81 Profilo | Guru

>ho risolto per ora in questo modo
puoi anche fare:

var idUtente = cmd.ExecuteScalar();
if (idUtente == null)
//gestisci il null

// fuori dall'if sei certo che idutente non sia null.

>mi resta da capire come mai hai scritto
>id =(int?)cmd.ExecuteScalar();
speravo facesse la conversione implicita.. ma non la fa.. prova quello che ti ho scritto sopra.

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5