MySQL İçin Hazırladığım DataAccessLayer Classı

Daha önce ki projelerimde hazırladığım, kullandığım MySQL data işlemlerimin ve Provider’ımın bulunduğu tüm kodları sizlerle paylaşmak istiyorum. Fakat bunu yaparken kimseyi hazırcılığa alıştırma gibi bir niyetim bulunmadığını belirtmek ister, affınıza sığınarak kodları baştan sona dikkatle okuyup, anlamanızı rica ediyorum.

<pre>using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql;
using MySql.Data;
using System.Data;
using MySql.Data.MySqlClient;

namespace Data
{
public class DataAccessLayer
{
public static string ServerName;
public static string InitialCatalog;
public static string UserName;
public static string Password;

public static string CreateConnString()
{
string ConnString = string.Format("SERVER={0};DATABASE={1};UID={2};PWD={3};PORT=9888;",
ServerName,
InitialCatalog,
UserName,
Password
);
return ConnString;
}

public static MySqlConnection OpenMyConnection()
{
MySqlConnection conn = new MySqlConnection(CreateConnString());
return conn;
}

public static void CloseMyConnection(MySqlConnection Conn)
{
Conn.Close();
Conn.Dispose();
}

public static bool ConnectionTest()
{
try
{
MySqlConnection conn = DataAccessLayer.OpenMyConnection();
conn.Open();
DataAccessLayer.CloseMyConnection(conn);
return true;
}catch { return false; }
}

public int MySqlExecute(string query, CommandType ct, MySqlParameter[] sp, out string Message)
{
MySqlConnection conn = OpenMyConnection();
try
{
if (conn.State != System.Data.ConnectionState.Open)
conn.Open();

MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.CommandType = ct;

if (sp != null)
{
for (int i = 0; i < sp.Count(); i++)
{
if (sp[i] != null)
cmd.Parameters.Add(sp.ToList()[i]);
}
}
Message = "";
return cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
Message = "Bir hata oluştu. Hata kodu: " + ex.Message;
return -1;
}
finally { CloseMyConnection(conn); }
}

public DataTable GetDataTable(string query, CommandType ct, MySqlParameter[] sp)
{
MySqlConnection conn = OpenMyConnection();
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.CommandType = ct;

if (sp != null)
{
for (int i = 0; i < sp.Count(); i++)
cmd.Parameters.Add(sp.ToList()[i]);
}

using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataTable dt = new DataTable();

try{
da.Fill(dt);
}catch{}

cmd.Dispose();
CloseMyConnection(conn);
return (dt.Rows.Count > 0 ? dt : null);
}
}

public DataRow GetDataRow(string query, CommandType ct, MySqlParameter[] sp)
{
MySqlConnection conn = OpenMyConnection();
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.CommandType = ct;

if (sp != null)
{
for (int i = 0; i < sp.Count(); i++)
if(sp[i] != null)
cmd.Parameters.Add(sp.ToList()[i]);
}

using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
CloseMyConnection(conn);
cmd.Dispose();
return (dt.Rows.Count > 0 ? dt.Rows[0] : null);
}
}

public string GetCell(string query, CommandType ct, MySqlParameter[] sp)
{
MySqlConnection conn = OpenMyConnection();
MySqlCommand cmd = new MySqlCommand(query, conn);
cmd.CommandType = ct;

if (sp != null)
{
for (int i = 0; i < sp.Count(); i++)
cmd.Parameters.Add(sp.ToList()[i]);
}

using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
da.Fill(dt);

cmd.Dispose();
CloseMyConnection(conn);
return (dt.Rows.Count > 0 ? dt.Rows[0][0].ToString() : string.Empty);
}
}

public bool Exists(string sqlQuery, out string Message)
{
Message = "";

MySqlConnection conn = OpenMyConnection();
MySqlCommand cmd = new MySqlCommand(sqlQuery, conn);
bool _exists = false;
try
{
conn.Open();
_exists = Convert.ToBoolean(cmd.ExecuteScalar());
}
catch (Exception ex)
{
Message = "Bir hata oluştu. Hata kodu: " + ex.Message;
}
finally
{
conn.Close();
cmd.Dispose();
}

return _exists;
}
}
}

Data Access Layer kodlarını okuyup anlamanız için, hangisinin ne işe yaradığını anlamak istemedim.

Provider’ı aşağıda ki linkten indirebilirsiniz.
http://yazilimcinotlari.com/MySQLProvider.rar

İyi çalışmalar

3,543 total views, 2 views today

No Comments

Leave a Comment

Ulaşım için: Facebook: /ganigani Twitter: @abdulgani_demir


*

%d blogcu bunu beğendi: