PDA

Tam Sürümünü Görmek İçin : Resmi Upload Edip Adresini Database Kaydetme


RedGhost
10/05/2007, 19:06
herkese merhaba. aranıza yeni katıldım. benim sorunum yada yapamadığım database resim kaydetme olayı. bir sürü şey okudum ama maalesef işime yaramadı kullanamadım. o yüzden kısaca istediğim kullanıcı resmini seçtikten sonra o resmi dizinde açtığım resim klasörüne kaydedip adresinide database kaydetmek. daha sonra da o kayıdı görüntülerken o resmide çağırmak. kolay mı zor mu bilmiyorum ama ben bir türlü beceremedim :(


asp ile olsun istemiyorum(olabiliyorsa tabi). diğer yöntem resmi kaydetme. o da olur ama bu daha mantıklı geldi.

yani benim sorunum resmi upload ettikten sonra o kayda o resmin adresini eklemek ve o kaydı çağırınca da o resminde görünmesini sağlamak.

teşekkürler şimdiden...


acehreli
10/05/2007, 20:20
Soylediklerin bana cok mantikli geliyor. Herhalde anlattiklarini yapabilecegin her sey de var. Yani database var, resmin nereye kaydedildigini biliyorsun. Database'de kayitlarin resimlerinin yerini tutan bir sutun (alan) olmali, onu oraya yazarsin... Anlattiklarin olur. :)

Tam olarak neresi eksik?

Ali

RedGhost
14/05/2007, 19:22
selam

c# ta yaptığım access uygulamam da bir resmi picturebox ile alıp bin klasörünün içinde olan \resim\ klasörüne kopyalayıp adresini de bir textbox a yazdırıyorum.

buraya kadar bir sorun yok. fakat bu adresi kaydetmek istediğim de nedense database i resmi aldığım yerde arıyor ve tabi bulamıyor. ama resmi database in olduğu bin klasöründen seçersem bir sorun çıkmıyor ve kaydediyor. adresi access te köprü türünde kaydediyorum ve bir türlü içinden çıkamadım.

resmi seçip picturebox a aktaran ve kopyalayan fonksiyon

private void BTResim_Click(object sender, System.EventArgs e)
{
OFResim.Filter = "Resim Dosyaları|" + "*.bmp;*.jpg";
if (OFResim.ShowDialog() == DialogResult.OK)
{
TBResim.Text = OFResim.FileName;
PBResim.Image = Image.FromFile (OFResim.FileName);

System.IO.FileInfo ff;
System.IO.FileInfo gg;
ff = new System.IO.FileInfo (OFResim.FileName);
gg = ff.CopyTo(Application.StartupPath + "/Resim/" + ff.Name ,true);
TBResim.Text =gg.Name;
}

}



database e kaydetme fonksiyonu ise


private void Kaydet()
{
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();
conn.ConnectionString =@"Provider = Microsoft.Jet.OLEDB.4.0;Data Source = derskayit.mdb";

System.Data.OleDb.OleDbCommand comm = new System.Data.OleDb.OleDbCommand ();
comm.Connection = conn;
comm.CommandType = CommandType.Text;
comm.CommandText = " INSERT INTO " +
" OgrenciKayit (Numara,Ad, Soyad,Bolum,BAdi,AAdi,Tarih,Sehir,Resim,BolumKod)" +
" values (@no,@ad, @soyad,@bolum,@badi,@aadi,@tarih,@sehir,@resim,@bo lumkod)";
comm.Parameters.Add ("@no", TBNO.Text);
comm.Parameters.Add ("@ad", TBAd.Text);
comm.Parameters.Add ("@soyad", TBSoyad.Text);
comm.Parameters.Add ("@bolum", CBBolum.Text);
comm.Parameters.Add ("@badi", TBBAdi.Text);
comm.Parameters.Add ("@aadi", TBAAdi.Text);
comm.Parameters.Add ("@tarih", TBDTarih.Text);
comm.Parameters.Add("@sehir", CBSehir.Text);
comm.Parameters.Add("@resim", TBResim.Text);
comm.Parameters.Add("@bolumkod", CBBolum.SelectedIndex);

try
{
conn.Open();
comm.ExecuteNonQuery();
//comm1.ExecuteNonQuery();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
MessageBox.Show("Başarılı");
conn.Close();
}

}

yardımcı olursanız sevinirim...

acehreli
14/05/2007, 19:43
Kaydetmeden once tiklandigindan emin misin? Cunku benim anladigim kadariyla TBResim.Text'in duzgun olmasi icin once BTResim_Click'in cagrilmis olmasi gerekiyor.

Bunun disinda bir sey bilemiyorum; umarim diger arkadaslarin bir fikri vardir.

Ali

RedGhost
15/05/2007, 15:36
sanırım sorunu buldum. resim seçmek isteyince o adresi hafızaya alıyor ve benim connection stringim de ki (conn.ConnectionString =@"Provider = Microsoft.Jet.OLEDB.4.0;Data Source =derskayit.mdb";
) adresin yerini alıyor. yani programın kafası karışıyor???

bunu nasıl çözebilirim ki ???

acehreli
15/05/2007, 18:53
Programin kafasi karismaz da icinde hatalar olabilir. :)

Bu kadar bilgiye dayanarak programinda bir hata oldugunu soyleyebilirim. "O adresi hafizaya aliyor" diye tarif ettigin islemde adresin alinabilecegi kadar yer var mi?

Ama anlamakta zorluk cekiyorum. :( "Benim connection string'imdeki adresin yerini aliyor" diyorsun. O string'de bir adres mi var? derskayit.mdb mi adres?

Adim adim "debug ederek" tam hangi islemde bozuldugunu anlamaya calisabilirsin.

Ali

RedGhost
15/05/2007, 23:22
Programin kafasi karismaz da icinde hatalar olabilir. :)

Bu kadar bilgiye dayanarak programinda bir hata oldugunu soyleyebilirim. "O adresi hafizaya aliyor" diye tarif ettigin islemde adresin alinabilecegi kadar yer var mi?

Ama anlamakta zorluk cekiyorum. :( "Benim connection string'imdeki adresin yerini aliyor" diyorsun. O string'de bir adres mi var? derskayit.mdb mi adres?

Adim adim "debug ederek" tam hangi islemde bozuldugunu anlamaya calisabilirsin.

Ali


demek istediğim bir resim seçtiğim zaman bir şekilde connection stringe etki ederek benim verdiğim "Data Source = derskayit.mdb" ı değiştiriyor ve o resmi nereden almışsam database adresini o yer olarak görüyor ve doğal olarak database orada olmuyor. ama resmi debug klasöründen seçince herşey normal oluyor. çünkü database de orada...