ASP.NET
Vikikitap, açık-kaynak kitap derlemeleri
ASP.NET bir web programlama teknolojisidir. Aslında ASP.NET tam anlamıyla bir dil değil, interaktif web siteleri oluşturabilmek amacıyla farklı dillerin kullanılabilmesini sağlayan bir teknolojidir. ASP'den türemiş gibi gözükse de aslında ASP'yle arasında dağlar kadar fark vardır. ASP.NET, .Net altyapısını kullanır. Dolayısıyla ASP.NET ile .Net Framework kütüphanesini kullanabiliriz. ASP.NET ile web siteleri hazırlamak için Visual Web Developer yazılımını kullanabilirsiniz. ASP.NET teknolojisi ile web siteleri oluşturabilmek için C# ya da Visual Basic.NET dillerinden birini biliyor olmamız gerekir. Bu kitapta C# kullanılmıştır.
Konu başlıkları |
[değiştir] Veri tabanı işlemleri
[değiştir] Connection nesnesi oluşturma
MSSQL veri tabanları için:
SqlConnection con=new SqlConnection("Data Source=bilgisayar;Initial Catalog=veritabani;Integrated Security=True");
MS Access için:
OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=dosya.mdb");
Connection nesnesi oluşturduktan sonra yapmamız gereken, veri tabanına bağlantılı şekilde mi yoksa bağlantısız şekilde mi bağlanacağımızı belirlemektir.
[değiştir] Bağlantılı olarak veri tabanına bağlanma
Bu bağlantı türünde veri tabanıyla ilgili işlem yaparken veri tabanına sürekli bağlı olmamız gerekir.
MSSQL veri tabanları için:
con.Open();
SqlCommand cmd=new SqlCommand("select * from tablo",con);
MS Access için:
con.Open();
OleDbCommand cmd=new OleDbCommand("select * from tablo",con);
Bu adımdan sonra gerek MSSQL gerekse de Access için yapılacak işlem aynıdır. Aşağıdaki satırlardan biriyle SQL cümlesi çalıştırılır.
cmd.ExecuteNonQuery(); //Geriye herhangi bir şey döndürmeyen SQL cümleleri için. Geriye int tipinde etkilenen kayıt sayısı döndürülür.
cmd.ExecuteScalar(); //Geriye tek bir değer döndüren SQL cümleleri için. (Object tipinde döndürülür.)
cmd.ExecuteReader(); //Geriye bir tablo döndüren SQL cümleleri için. Veri tabanının tipine göre geriye ya SqlDataReader ya
//ya da OleDbDataReader nesnesi döndürür.
[değiştir] OleDbDataReader ve SqlDataReader sınıfları
Bu sınıflar SqlCommand veya OleDbCommand sınıfının ExcuteReader() metodu ile oluşan nesneleri temsil ederler. Yani bu sınıflar bir tablo temsil ederler. Tablodaki satırlar arasında dolaşmak için OleDbDataReader veya SqlDataReader sınıflarına ait olan static olmayan Read() metodu kullanılır. Her Read() metodu aktif kaydı bir birim öteler ve true döndürür. Eğer aktif kayıt ötelenemiyorsa geriye false döndürür.
OleDbDataReader rdr=cmd.ExecuteReader(); while(rdr.Read()) Label1.Text=rdr[0]+" - "+Label1.Text; con.Close();
[değiştir] Bağlantısız olarak veri tabanına bağlanma
Bağlantısız veri tabanında veri tabanındaki veriler bir kere çekilir. İşlemler bu çekilmiş veriler üzerinde yapılır. En sonda değiştirilmiş veriler tekrar veri tabanına yazılır. Bağlantısız yöntemde veriler çekildikten sonra veri tabanıyla bağlantının kopması programın işleyişine engel değildir. Veri tabanı türüne göre önce bir DataAdapter nesnesi oluşturmalıyız:
OleDbDataAdapter adp=new OleDbdataAdapter("select * from tablo",con);
//veya
SqlDataAdapter adp=new SqlDataAdapter("select * from tablo",con);
Daha sonra bir GridView DataAdapter'daki verilerle doldurulabilir:
DataSet ds=new DataSet(); adp.Fill(ds); GridView1.DataSource=ds.Tables[0]; GridView1.DataBind();
[değiştir] Stored Prosedürler
Stored prosedürler Access'te desteklenmez. Stored prosedürleri kullanabilmemiz için yalnızca MSSQL gibi bir veri tabanı gereklidir.
[değiştir] Stored prosedür hazırlama
create procedure isim @degisken1 nvarchar(10), @degisken2 nvarchar(10) as begin select * from tablo end go
[değiştir] Stored prosedür çalıştırma
SqlCommand cmd=new SqlCommand("exec isim 'değer1', 'değer2'",con);
SqlDataAdapter adp=new SqlDataAdapter(cmd);
//Geri kalan kısım tahmin ettiğiniz gibi
-- ekleme
sqlcommand cmd... satırından sonra cmd.CommandType=CommandType.StoredProcedure; // eklenmesi gerekirki daha sonra procedür bir parametre istiyorsa cmd.parameters.AddWithValue("@parametretanımı",--parametenin alınacağı/uygulanacağı yer--)
[değiştir] Dosyalarla ilgili işlemler
[değiştir] Dosyaya yönlendirme
Response.Redirect("dosya.htm");
[değiştir] Adres çubuğundaki verileri alma
Başka bir dosyadan aspx dosyamıza http://.../default.aspx?ad=bekir&soyad=oflaz şeklinde bir link verildiğinde aspx dosyamıza koyacağımız aşağıdaki satırla bu URL'deki verileri alabiliriz.
Label.Text=Request.QueryString["adi"].ToString();
Bu satır sonucunda Label'ın Text'i bekir olacaktır.
[değiştir] Dosya upload ettirme
Bunun için sayfamıza bir FileUpload nesnesi getiriririz ve aşağıdaki kodu yazarız.
if(FileUpload1.HasFile) //Kullanıcının bir dosya upload etmek için halihazırda bir dosya seçip seçmediği kontrol ediliyor.
FileUpload1.SaveAs(Server.MapPath(FileUpload1.FileName)); //Burada dosya, aspx dosyamızın bulunduğu klasöre orijinal
//adıyla kaydediliyor.
[değiştir] Web servisleri
[WebMethod]
public int topla(int a,int b)
{
return a+b;
}