Inserire dati nel db dopo select di verifica

venerdì 02 maggio 2014 - 13.01
Tag Elenco Tags  C#  |  .NET 4.0

Cyberking Profilo | Junior Member

Ciao a tutti,
vi premetto che mi sto avvicinando ad asp.net leggendo un pò in rete e un pò dalla guida, prima programmavo solo in asp classico

sto provando a creare un inserimento di una foto tramite form con un ridimensionamento, cosa che sono riuscito a fare, ma vorrei anche inserire dei dati nel database

lo script che sto utilizzando è questo che posto di seguito, ho anche fatto un insert, ma quella che ho fatto mi da la possibilità di eseguire un insert in una tabella unica, mentre io vorrei prima fare una select per verificare se l'email dell'utente è già presente in una tabella, se non lo è la inserisco altrimenti mi tiro fuori l'id di questo record, che utilizzo per inserirla nel db delle foto insieme al nome della foto

Infine, vorrei anche inserire dei controlli javascript, a finché prima di richiamare la funzione asp.net verifichi lato client che l'utente abbia inserito correttamente i campi nel form

[code]
<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Data.OleDb" %>


<script runat="server">


void UploadBtn_Click(Object sender, EventArgs e)
{

String UploadedFile = MyFile.PostedFile.FileName;
int ExtractPos = UploadedFile.LastIndexOf("\\") + 1;



//to retrieve only Filename from the complete path
String UploadedFileName = UploadedFile.Substring(ExtractPos,UploadedFile.Length - ExtractPos);

String percorso= Request.PhysicalPath;
int daEliminare= percorso.Length -18;
string nuovo = percorso.Substring(0, daEliminare) + "foto/";


MyFile.PostedFile.SaveAs(nuovo + UploadedFileName);

//thumbnail creation starts
try
{
//Read in the image filename whose thumbnail has to be created
String imageUrl= UploadedFileName;



//You may even specify a standard thumbnail size
int imageWidth = 250;
int imageHeight = 250;

if (imageUrl.IndexOf("/") >= 0 || imageUrl.IndexOf("\\") >= 0 )
{
//We found a / or \
Response.End();
}


imageUrl = nuovo + imageUrl;

System.Drawing.Image fullSizeImg = System.Drawing.Image.FromFile(imageUrl);
int altezzaNuova;
int larghezzaNuova;

larghezzaNuova = fullSizeImg.Width * imageHeight / fullSizeImg.Height;

System.Drawing.Image.GetThumbnailImageAbort dummyCallBack = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

System.Drawing.Image thumbNailImg = fullSizeImg.GetThumbnailImage(larghezzaNuova, imageHeight, dummyCallBack, IntPtr.Zero);

DateTime MyDate = DateTime.Now;

string nuovoFileName;
string[] words = UploadedFileName.Split('.');

String MyString = "min_" + words[0] + ".jpg";

thumbNailImg.Save(nuovo + MyString, ImageFormat.Jpeg);
thumbNailImg.Dispose();


evento=true;

/* insert

OleDbConnection conn = null;

OleDbCommand cmd = null;

OleDbDataReader dr = null;

conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; data source=" + Server.MapPath("/mdb-database/prova.mdb"));

conn.Open();

System.Console.WriteLine("Connessione aperta sul db");

string sql = "update products set imageUrl='"+ UploadedFileName +"', smallImageUrl='" + MyString + "' where idProduct= "+ idProduct ;


System.Console.WriteLine(sql);

cmd = new OleDbCommand(sql, conn);

System.Console.WriteLine("Stringa sql eseguita");

cmd.ExecuteNonQuery();

System.Console.WriteLine("Scrivo nella tabella");



conn.Close();



}

catch(Exception ex)
{
Response.Write("An error occurred - " + ex.ToString());
}

}

//this function is reqd for thumbnail creation
public bool ThumbnailCallback()
{
return false;
}

</script>

[code]

per richiamare la funzione utilizzo questo link
<a href="#" class="button" runat="server" onserverclick="UploadBtn_Click">Invia</a>


mi sapete dare qualche dritta
ho commentato la parte dell'insert che per ora utilizzo

Grazie
http://www.cyberkings.it

ridaria Profilo | Expert

scusa, ma a occhio non vedo il problema.

ti da qualche errore la procedura?

CIAO
Riccardo D'Aria

Cyberking Profilo | Junior Member

Ciao,
forse non mi sono spiegato bene.
Non ho problemi in questo script, ma in questo momento eseguo l'upload dell'immagine faccio l'insert nel db
Io invece vorrei fare l'upload dell'immagine,
fare una select in una tabella (utenti) e verificare la presenza dell'email
se l'email non è presente (.eof) faccio l'insert in questa tabella e mi prendo il nuovo id altrimenti mi tiro fuori l'id dell'email
A questo punto faccio l'insert in un altra tabella con il nome della foto e l'id ricevuto/creato
è la prima parte della select che non so fare in questa funzione
http://www.cyberkings.it

ridaria Profilo | Expert

devi associare l'immagine al soggetto?

Giusto?
Riccardo D'Aria

Cyberking Profilo | Junior Member

Intanto, grazie per il supporto.

Si ho due tabelle
utenti e foto
in utenti ho id ed email
in foto ho id,foto,id_utente

in asp classico avrei fatto così
prima la verifica e l'inserimento dell'email e poi dopo nell'altra tabella l'inserimento del nome della foto


email=pippo@libero.it
set rs= server.CreateObject("adodb.recordset")
sql="select top 1 id from utenti where email='"& email &"'"
rs.open sql,connect

if not rs.eof then

idUtente=rs("id")
else


set rsADO = Server.CreateObject("ADODB.Recordset")
rsADO.ActiveConnection = connect
rsADO.Source = utenti
rsADO.CursorType = 1
rsADO.CursorLocation = 3
rsADO.LockType = 3
rsADO.Open

rsADO.AddNew
rsADO("email")=email
rsADO.update
idUtente=rsADO("id")
rsADO.close

end if




set rsADO = Server.CreateObject("ADODB.Recordset")
rsADO.ActiveConnection = connect
rsADO.Source = foto
rsADO.CursorType = 1
rsADO.CursorLocation = 3
rsADO.LockType = 3
rsADO.Open

rsADO.AddNew
rsADO("id_utente")=idUtente
rsADO("foto")=fotoInserita
rsADO.update
rsADO.close
http://www.cyberkings.it

Cyberking Profilo | Junior Member

Sto ancora cercando di fare questa insert nel db,
ho eseguito diverse modifiche allo script ma ho ancora dei problemi


il primo problema ce l'ho quando inserisco un indirizzo che non c'è nel db e mi da eccezione
vorrei mettere un if .eof o qualcosa del genere
ho provato a modificare il codice che vedete ancora + sotto con questo primo blocco di if ma nulla

codice:
object RsCom = cmd.ExecuteScalar();
int idUtente=0;
if (RsCom != null )
{

idUtente= (Int32)RsCom;
MyContentType.InnerHtml=idUtente.ToString();
}



non mi da errore ma nemmeno mi entra nell'if
quindi non riesco ad accedere all'if che ti ho incollato su
per scrivere nel db
cosa sto sbagliando?


non avendo ben capito ancora tante cose di c#
vi chiedo ma sto usando troppi command o va bene così?

grazie

qui di seguito vi posto tutto il codice di quello che faccio
ovvero controllare prima se è presente l'email nella tabella utenti
se non lo è provo ad inserirlo e con il suo nuovo in inserire poi la foto nel db foto
altrimenti se è già presente ( e qui mi va in errore) mi tiro fuori il suo id e metto solo i dati della foto nel db



string sql = "select idUtente from utenti where mail='"+ Email +'";




cmd = new OleDbCommand(sql, conn);

conn.Open();



int idUtente=0;
idUtente = (Int32)cmd.ExecuteScalar();
MyContentType.InnerHtml=idUtente.ToString();


if ( idUtente==0)
{
OleDbCommand cmd2 = null;
sql="insert into utenti mail values '" + Email + "'";
cmd2 = new OleDbCommand(sql, conn);
cmd2.ExecuteNonQuery();

OleDbCommand cmd3 = null;
sql = "select idUtente from utenti where mail='" + Email + "'";
cmd3 = new OleDbCommand(sql, conn);
idUtente = (Int32)cmd3.ExecuteScalar();
MyContentType.InnerHtml=idUtente.ToString();

OleDbCommand cmd4 = null;
sql="insert into foto (coordinate,IdUtente,foto) values ('" + coordinate + "','" + idUtente + "','"+ UploadedFileName +"')";
cmd4 = new OleDbCommand(sql, conn);
cmd4.ExecuteNonQuery();

}
else
{

OleDbCommand cmd4 = null;
sql="insert into foto (coordinate,IdUtente,foto) values ('" + coordinate + "','" + idUtente + "','"+ UploadedFileName +"')";
cmd4 = new OleDbCommand(sql, conn);
cmd4.ExecuteNonQuery();
}
http://www.cyberkings.it

ridaria Profilo | Expert

>Sto ancora cercando di fare questa insert nel db,
>ho eseguito diverse modifiche allo script ma ho ancora dei problemi
>
>
>il primo problema ce l'ho quando inserisco un indirizzo che non
>c'è nel db e mi da eccezione

cominciamo da qui:
inserisci un indirizzo dove, e che operazione fai su questo indirizzo: select, modifica o altro?

Ciao

Riccardo D'Aria

Cyberking Profilo | Junior Member

ho due tabelle
una diciamo anagrafica e una con i percorsi delle foto e l'id dell'utente che l'ha inserito
sopra avevo postato il codice ma lo riscrivo qui di seguito per farti capire cosa cerco di fare


in questo modo vado a fare la verifica se l'utente è già presente nel db
se l'avessi fatto in asp classico avrei fatto i rs.eof then
invece come l'ho fatto io non mi da errore,.....ma nemmeno mi entra in un if


string sql = "select idUtente from utenti where mail='"+ Email +'";

cmd = new OleDbCommand(sql, conn);

conn.Open();

int idUtente=0;
idUtente = (Int32)cmd.ExecuteScalar();
MyContentType.InnerHtml=idUtente.ToString();

if ( idUtente==0)
{
....non c'è inserisci nel db anagrafica
}
else
{
.....non c'è
}
http://www.cyberkings.it
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