Volkan Atasever

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve daha bir çok yazılarım...

.NET üstünde MySQL ile çalışma

clock Ocak 28, 2017 07:59 by author Volkan Atasever

MySQL, çok sayıda sistemde çalışan multi threaded ve çok kullanıcılı bir veritabanı yönetim sistemidir. SQL Server sürümlerine bir alternatif olarak düşünebiliriz. Gerçek düyna da SQL Server'a rakip olabilecek birden fazla Veritabanı Yönetim Sistemi bulunmaktadır. Oracle DB saymazsak MySQL en çok kullanılan alternatiflerden biridir. Aynı zamanda sadece Windows platformlarında değil UNIX, OS/2 ve Linux platformlarında da hızlı bir performans sergilemektedir. Açık kaynak kodlu bir sistem olduğu için diğer platformlarada port edilebilir durumdadır. ODBC sürücüleri olduğundan .NET üzerinde de kolaylıkla MySQL veritabanı yönetim sistemine erişerek MySQL tabanlı uygulamalar geliştirebiliriz.

MySQL tarihçesi şöyledir (Wikipedia’dan alıntıdır);

1994 MySQL'in geliştirilmesine başlandı.

1995 MySQL ilk sürümü yayınlandı.

2001 yılında MySQL 3.23 yayınlandı.

2004 MySQL 4.1 beta sürümü, ve gerçek sürümü Ekim 2004 yılında yayınlandı. (R-trees and B-trees, subqueries, prepared statements)

2008: MySQL 5.1 sürümü yayınlandı. (event scheduler, partitioning, plugin API, row-based replication, server log tables)

2008 Ocak: Sun Microsystems, bir milyar dolara MySQL'i satın aldı.

2009 Nisan: Oracle, Sun Microsystems'i satın aldı. Oracle, MySQL'i geliştirmeye devam edeceğini duyurdu.

 

MySQL Aşağıdaki yapıladı desteklemektedir;

Tables (Tablo)

Views (Görüntü) (Görüntüleme)

Procedures (Prosedür)

Triggers

Cursors

 

 

MySQL veritabanı yönetim sistemini kurduktan sonra doğrudan .NET uygulamaları altında C# ile geliştirme yapamazsınız. Bunun için .NET Connector’a ihtiyacınız var. MySQL ADO.NET sürücüsünü mysql sitesinden indirebilirsiniz.

 

 

 MySQL sürücüsünü kurmak indirdikten sonra bilgisayarınıza şöyle kurabilirsiniz;

 

 

 Setup Type kısmında istediğiniz kurulum tipini seçeceksiniz.

 

 

 Complete seçeneğini seçerseniz tüm frameworkler ve compact framework gibi alternatif araçlarda sisteminize yüklenecektir.

 

 

 

 

 MySQL veritabanı motorunun yönetimini yapacağınız uygulama MySQL Workbench uygulamasıdır. Bu uygulama SQL Server üstündeki Management Studio’ya denk gelmektedir.

 

 

 Workbench ekranı üstünden birden fazla connection ekleyebilir veya  yerel sunucunuzdaki verilerle çalışıp yönetebilirsiniz.

 

 

 Workbenc üzerinde birden fazla araç barınmaktadır.

 

 

 Tables, Views, Stored Procedures ve Functions kısmından işlevsel tüm özellikleri kullanabilirsiniz.

 

 

 Aynı SQL Server üzerinde kullandığımız sql cümleciklerini ufak bazı değişikliklerle MySQL üzerinde de kullanabilirsiniz. Select * from yapısı aynı şekilde MySQL içinde de geçerlidir.

 

 

 Farklı bir lokasyondaki veritabanına bağlanmak için aynı şekilde connect to database seçeneğini seçerek bağlantı sağlayabilirsiniz.

 

 

.NET uygulamamızda C# ile MySQL bağlantılı yazılım yazmak için öncelikle referanslar kısmından yüklediğimiz mysql connector’un dll paketlerini eklememiz gerekmektedir.

 

 Kullanacağımız MySQL.Data referansı bize gerekli alt yapıyı sağlayacaktır. Aynı zamanda Entity Framework yapısı içinde destek bulunmaktadır.

 

 

 Referanslara eklediğimizde MySql.Data başlığının projemize eklenmiş olduğunu görebiliriz.

 

 

Uygulamamızı yazarken gerekli olan namespace’ler MySql.Data, MySql, MySql.Data.MySqlClient isim alanlarıdır. Sql Server kodlaması yaparken kullandığımız SqlConnection gibi sınıfların isimleri bu isim alanı altında MySqlConnection gibi ufak değişiklikler göstermiştir. Aynı şekilde SqlCommand MySql ile kodlama yaparken MySqlCommand ismini almıştır. SqlDataAdapter ismi ise MySqlDataAdapter olmuştur. Bu şekilde klasik Ado.NET kodlaması yapabilirsiniz.

MySQL ile bağlanan ve işlemler yapan bir sınıf aşağıdaki şekilde tanımlanmış ve kodlanmıştır.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Data.SqlClient;

using System.Data;

using MySql.Data;

using MySql;

using MySql.Data.MySqlClient;

 

namespace sample_db

{

    public class dblayer

    {

        string connectionstr;

 

        public dblayer()

        {

            connectionstr = "Network Address=IP_Adresi;" +

                                                   "Initial Catalog='database_ismi';" +

                                                       "Persist Security Info=no;" +

                                                   "User Name='kullanıcı_ismi';" +

                                                   "Password='parola'";

        }

 

 

        public DataTable etkinlikleri_al()

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.etkinlik order by etkinlik.tarih desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable projeleri_al()

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.proje order by id desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable haberleri_al(string baslangic, string bitis)

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.haber where yayin_tarihi between " + baslangic + " and " + bitis + "order by haber.yayin_tarihi desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

        public DataTable duyurulari_al(string baslangic, string bitis)

        {

            DataTable dt = null;

            try

            {

                MySqlConnection connection = new MySqlConnection(connectionstr);

                string mysqlquery = "SELECT * FROM sample_db.haber where yayin_tarihi between "+baslangic+" and "+bitis+" order by haber.yayin_tarihi desc";

                MySqlCommand command = new MySqlCommand(mysqlquery, connection);

                connection.Open();

                dt = new DataTable();

                MySqlDataAdapter adapter = new MySqlDataAdapter(command);

                adapter.Fill(dt);

            }

            catch

            {

                return null;

            }

            return dt;

        }

 

    }

 

}



Özelleştirilmiş DataBase Rolü tanımlamak ve izinleri yönetmek

clock Ekim 21, 2009 04:50 by author Volkan Atasever

Özelleştirilmiş veri tabanı rolleri sayesinde kullanıclara istediğimiz gibi özelleştirebildiğimiz rolleri atamamızı sağlar bu sayede özel bir rol tanımlayıp istediğimiz sayıda kullanıcıya bu rolleri atayabiliriz. Bunları yapmak bize hız ve veritabanımızı da daha kolay yönetmemizi sağlamaktadır. Aşağıda yeni bir rol tanımlayıp bu role kendi seçimimiz olan rolleri verip kullanıcımıza da bu rolleri atamktayız. Scriptte kullandığım sp_addrolemember prosedürü sql server'a ait bir prosedür olup bu rolleri kullanıcının rolü haline getirmemizi sağlamaktadır.

 

Bu adımda AdventureWorks database'i üstünde rol yaratmaktayız;

USEAdventureWorks

GO

CREATE ROLE [TestRol_1] AUTHORIZATION[dbo]

Go

 

Burada tanımladığımız rol'e izinlerimizi veriyoruz.

USE AdventureWorks

GO

GRANT ALTER,EXECUTE, SELECT,INSERT,UPDATE,DELETE

ON SCHEMA ::dbo

TO TestRol_1

Go

 

USEAdventureWorks

GO

GRANT BACKUP DATABASE,BACKUP LOG To [TestRol_1]

Go

 

SQL Server'ın ken içinde barındırdığı sp_addrolemember prosedürü ile rolümüze kullanıcı eklemekteyiz.

USEAdventureWorks

GO

EXEC sp_addrolememberN'TestRol_1', N'USER_ISMI'

GO

 

Bu adımda rolünü tanımladığımız kullanıcı için Windows Login hakkı vermekteyiz varsayılan veritabanı olaraksa AdventureWork veritabanını kullanmaktayız.

USEAdventureWorks

GO

CREATE LOGIN [DenemeDomain\USER_ISMI] FROM WINDOWS WITH DEFAULT_DATABASE=AdventureWorks

GO

 

Bu adımda veri tabanı için kullanıcımızı tanımlamaktayız.

USEAdventureWorks

GO

CREATE USER [USER_ISMI] FORLOGIN [DenemeDomain\USER_ISMI]

GO

 

Kaynak: Namwar Rizvi



SQL Server ile Otomatik Yedekleme (Maintenance Plan)

clock Ekim 31, 2008 02:24 by author Volkan Atasever

Uzun zamandır beri incelemelerimde makalelerin çoğunun grafiksel olayları bile metin olarak ifade ettiğini görmekteyim. Bu da hızlı bir tempoyla giderken size atılan bir çelmeden başka bir şey olmuyor. Bundan sonra imajlarla anlatılabilen ve anlaşılmasıda okuyucu tarafından daha kolay olan konularla bir seriye başlamayı düşünüyorum. Bu ilk Grafiksel anlatım içeren makalemde sizlerden gelen istek üzerine değişik konulara değinebilirim. Daha çok Mantık ve Algoritma içeren karmaşık yapılar yerine hepimizin bazen bilmediği veya irdelemediği konulara değineceğim.

Maintenance Plan ile birçok işimizi job yapıp otomatik bir halde gerçekleyebiliriz. Bizim içinse Maintenance Plan Otomatik yedekleme yapmamızı sağlayacak bir araç.

SQL Server Management Studio’da Maintenance Plans menüsünü görmekteyiz şu anda ağaç yapısı içinde herhangi bir Plan bulunmamakta.

 
Kolay bir adım olan Wizard ile database’imizin yedekleme işlemini otomatik olarak gerçekleyeceğiz. Adımlarımızı öğrendiğimiz zaman custom şekilde bu maddeleri uygulamanızda çok daha kolay olacaktır.
 
 

 
SQL Server Maintenance Plan Wizard başlangıç sayfasını next ile geçiyoruz. Bize yapabileceklerimizin listesinide vermekte. 
 

 
Single schedule yani tekli zaman planımızı seçelim ve schedule’ı değiştirmek için change’e basalım.
 
 

 
Schedule type olarak Recurring seçiyoruz böylece bizim belirlediğimiz standartlar çerçevesinde Plan’ımız çalışacak. Occurs maddesinde backup’ı uygulayacağımız aralığı ve Recurs everyde ise frekansımızı seçiyoruz.
 
 

 
Otomatik olarak SQL Server Agent başladığında başlasın seçeneği bizim için yeterli.
 
 

 
Backup olarak Database (Full) seçeneğini seçiyoruz siz burada farkını vs. alabilirsiniz. 
 

 
Bu kısmı next diyerek geçiyoruz.
 
 

 
Database olarak istediğimiz database’i seçiyoruz. Diğer seçenekler isteğe bağlı daha doğrusu ihtiyacımız olduğunda göz önünde bulundurabileceğimiz seçeneklerdir.
 
 

 
Alttaki resimde görebileceğiniz gibi en önemli kısım database seçili olması ve backup’ın oluşturulacağı yeri Folder seçeneğinde kullanacağınız path’i seçmeniz.
 
 


Bu Maintenance plan’ı execute ettikten sonra database’inizin güvenliğinden bir kez daha emin olabilirsiniz.
 


Volkan Atasever Kimdir ?

E-Mail: volkan(et)volkanatasever.com

Genel Müdür/S4G 
Bilgisayar Mühendisi

mühendislik, edebiyat, retro computer, yazılım, şiir, nümismatik, bilişim, podcast ve bir çok kategoride yazılarım...

Yazılım Kitaplarım

   

Şiir Kitaplarım

Dergi Yazılarım

 

Sosyal Ağlarım

 

 

 

 

Retro Bilgisayar Dergimiz

Türkçe Retro Bilgisayar dergimiz haziran 2016'da ilk sayısını çıkardı. ilk sayı yeni bir internet sitesinden tekrar yayınlanacaktır. Retro camiası tüm dünyada oldukça eğlenceli bir camia. Sizde katkıda bulunmak isterseniz bana mail atmanız yeterli. Dergimiz PDF formatında ve tamamen ücretsizdir.

Yasal Bilgi

Sitedeki yazıları,kodlar ve diğer materyaller Volkan Atasever'e aittir. Yazarı ve siteyi kaynak göstererek yazıları paylaşabilirsiniz.  Copyright(c)2004-2017

Sign In

Yazılım