Forum

An attempt to attac...
 
Bildirimler
Hepsini Temizle

An attempt to attach an auto-named database for

5 Yazılar
3 Üyeler
0 Reactions
661 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

tablo yolunu app.config dosyasında providerını falan belirttim
daha sonra baglantıyı açmak ve kurmak için bir ayrı class altında metod kullandım

fakat textboxlardaki bilgileri tabloya atarken hata veriyor ?

sebebi ne olabilir ?

 

 

private void btnprnsave_Click(object sender, EventArgs e)
        {          
            SqlConnection conn = DBConfigs.DataCon();
           
SqlCommand record = new SqlCommand ("insert into
dbo.PersonalInformationTable (PersonalName,PersonalSurname,PersonalEGN)
values ("+txtPrnName.Text+","+txtPrnSurName.Text+","+txtPrnEgn.Text+")",
conn);
            record.ExecuteNonQuery();
            conn.Close();
        }

 

hata veriyor :S nette araştırdım kesin bi cevap yok. bazılarıda çalışan komutlar bende çalışmadı ? SQL EXPRESS 2008 i kaldırsam mı acaba ? 

 
Gönderildi : 21/06/2011 02:05

(@eralperat)
Gönderiler: 10
Eminent Member
 

Merhaba,

Mdf olarak erişmek istediğiniz database'in adına sql server'in aynı instance'i içerisinde rastlıyor ondan dolayı hata fırlatıyor diye düşünüyorum.

Sql Server'in mevcut instance'i içerisinde ki database isimlerini kontrol edip sonrasında erişir misiniz ? Bir de haricen mdf'i bu şekilde vererek bağlanmak çok tasvip edilen bir yöntem değil direkt olarak Management studio içerisinde database i create edip ve .net kodu içerisinden ilgili db connection string'i ilgili db sunucusunu ve initial catalog name  vererek erişirseniz çok daha sağlıklı olacaktır.

Kolay gelsin

E2

 
Gönderildi : 21/06/2011 03:26

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

dediklerinizin bazılarını anlamadın yani uzman değilim yeni yeni başladım .

 

peki sql managementle yaptığımız database C:/programfiles/Microsoft Sql / management 10,0 / medicalDB.mdf olarak kayıtlanıyor. 

 

ben bunu connection string olarak yani app.configde tanımladıgım |Databasedirectory|\MedicalDB.mdf haliyle yazsam, program sqlmanagementte yapılan veri yolunu otomatik olarak bulacak mı yoksa 

progfiles/mic.../....medicalDB.mdf olarak mı tanımalamam gerek datadirectory de ? 

 

 teşekkürler ...

 
Gönderildi : 21/06/2011 03:36

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba Rado,

Öncelikle yapman gereken önceden de belirtmiştim tekrar belirtiyim.Kodun içinde kullandığın insert statement içindeki  değerleri pas (escape) geçmen için her bir değeri kendi içinde tek tırnak olarak tekrar yazmalısın.Yani buna benzer şekilde ;

"insert into dbo.PersonalInformationTable (PersonalName,PersonalSurname,PersonalEGN) values ('"+txtPrnName.Text+"','"+txtPrnSurName.Text+"','"+txtPrnEgn.Text+"')", conn);

Hatta daha iyisi için parametrize ederek de yazabilirsin.

2.Veritabanı dosyasının var olup olmadığından emin ol.

3-İki farklı SQL Server Express instance içinde iki kez aynı database dosyasını attach edemeyeceğin gibi SQL Server Express Management Studio ile aynı anda database dosyasını attach edemezsin.

4-Her zaman database bağlantısını kapattığından emin olmalısın.Bunun için Dispose() methodunu kullanabilirsiniz.Böylece database bağlantılardaki bağlantı hatalarınınki eksikliklere karşı önlem alırsın.

5-Ayrıca  insert statement içindeki metinsel verileri encode etmen gerekiyor.Bunun için şöyle birşey yapabilirsiniz.

 values ('"+txtPrnName.Text.Replace("'","''")+"','"+txtPrnSurName.Text.Replace("'","''")+"',...

gibi.Bununla birlikte bazı değerler çalışmayacak.Vede daha da ciddi olarak database hacklenebilecektir.Bunun için bunu sadece uygulama için ilerde not alabilirsin.

 

Saygılar,

 
Gönderildi : 23/06/2011 19:47

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

5-Ayrıca  insert statement içindeki metinsel verileri encode etmen gerekiyor.Bunun için şöyle birşey yapabilirsiniz.

 values ('"+txtPrnName.Text.Replace("'","''")+"','"+txtPrnSurName.Text.Replace("'","''")+"',...

 

----------------------------------------

 

bu kısım çok işime yarıycak ve önemli detay

 

teşekkürler.

 
Gönderildi : 28/06/2011 01:40

Paylaş: