Saturday, April 7, 2012

dynamic xotira

Dynamic xotira haqida
Dasturlashda ikki xil xotiradan foydalanamiz: static, dynamic.
Static - bu usuldan foydalaniladigan objectlar stack dan joy oladi, Stack esa chegaralangan. Katta bo`lmagan, ko`p foydalanilmaydigan yo block ichidagi object larda foydalanish maqsadga muvofiq.

{
string a="rahim",b="123";
int e=3;
}


Dynamic - bu usulda object ma`lumoti dynamic xotirada saqlanadi va bizga bu dynamic ma`lumot uchun link beriladi xolos.

{
Program p=new Program();
...
TextBox t=new TextBox();
}


Agarda biz

{
TextBox t=new TextBox();
Controls.Add(t);
t=new TextBox();
Controls.Add(t);
t=new TextBox();
Controls.Add(t);
}

deb yozadigan bo`lsak formaga 3 ta textbox chiziladi. 
Savol: biz 1 ta t ni ishlatdikku nega 3 ta chizdi?
Javob: chunki t -shunchaki bir link edi. biz 3 marta textbox ni dynamic chaqirib qo`shib qo`ydik, bizda faqt link yangilandi. ma`lumot esa shu noma`lum joyda qolib ketdi. ma`lumot turgan link esa yangisiga o`zgarib qoldi.

Tuesday, April 3, 2012

DBmanager


using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
public partial class DBmanager
{
    public DBmanager()
    {
        DBmanager.connectionString = System.Configuration.ConfigurationManager.AppSettings["Cnstr"].ToString();
    }
    static string connectionString = "";
    public static string con_str()
    {
        return connectionString;
        //return @"Initial Catalog=Uzstandart;Data Source=.; Integrated Security=true";
    }
    public static int? exec(SqlCommand cmd)
    {
        int? val = null;
        using (SqlConnection conn = new SqlConnection(con_str()))
        {
            cmd.Connection = conn;
            try
            {
                if (conn.State != ConnectionState.Open) conn.Open();
                val = cmd.ExecuteNonQuery();
                conn.Close();
                return val;
            }
            catch
            {
                if (conn.State != ConnectionState.Closed) conn.Close();
                // bu qachonki xatoni aniqlash qiyin bo`lganda xato ba`zada bo`lsa vaqtincha ochib qo`yiladi
                //throw new Exception(exp.Message);
                return null;
            }
        }
    }
    public static ArrayList getDataList(SqlCommand cmd)
    {
        ArrayList lst = new ArrayList();
        using (SqlConnection conn = new SqlConnection(con_str()))
        {
            cmd.Connection = conn;
            try
            {
                if (conn.State != ConnectionState.Open) conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    int n = dr.FieldCount, i = -1;
                    object[] o = new object[n];
                    while (++i < n)
                    {
                        o[i] = dr[i];
                    }
                    lst.Add(o);
                }
                conn.Close();
                dr.Close();
                return lst;
            }
            catch (Exception exp)
            {
                if (conn.State != ConnectionState.Closed) conn.Close();
                //bu qachonki xatoni aniqlash qiyin bo`lganda xato ba`zada bo`lsa vaqtincha ochib qo`yiladi
                throw new Exception(exp.Message);
                //return null;
            }
        }
    }
    public static Object[] getData(SqlCommand cmd)
    {
        Object[] o = null;
        using (SqlConnection conn = new SqlConnection(con_str()))
        {
            cmd.Connection = conn;
            try
            {
                if (conn.State != ConnectionState.Open) conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    int n = dr.FieldCount, i = -1;
                    o = new object[n];
                    while (++i < n)
                    {
                        o[i] = dr[i];
                    }
                }
                conn.Close();
                dr.Close();
                return o;
            }
            catch
            {
                if (conn.State != ConnectionState.Closed) conn.Close();
                // bu qachonki xatoni aniqlash qiyin bo`lganda xato ba`zada bo`lsa vaqtincha ochib qo`yiladi
                //throw new Exception(exp.Message);
                return null;
            }
        }
    }
    public static object value(SqlCommand cmd)
    {
        object val = null;
        using (SqlConnection conn = new SqlConnection(con_str()))
        {
            cmd.Connection = conn;
            try
            {
                if (conn.State != ConnectionState.Open) conn.Open();
                val = cmd.ExecuteScalar();
                conn.Close();
                return val;
            }
            catch (Exception exp)
            {
                if (conn.State != ConnectionState.Closed) conn.Close();
                //bu qachonki xatoni aniqlash qiyin bo`lganda xato ba`zada bo`lsa vaqtincha ochib qo`yiladi
                throw new Exception(exp.Message);
                //return null;
            }
        }
    }


    SqlConnection sqlConnection;



    public void newConnection()
    {
        if (sqlConnection == null)
        {
            sqlConnection = new SqlConnection(con_str());
        }
    }
    public void open()
    {
        if (sqlConnection.State != ConnectionState.Open)
        {
            sqlConnection.Open();
        }
    }
    SqlTransaction transaction;
    public void beginTransaction()
    {
        transaction = sqlConnection.BeginTransaction();
    }
    public SqlTransaction Transaction
    {
        get
        {
            return transaction;
        }
    }
    public void close()
    {
        if (sqlConnection.State != ConnectionState.Closed)
        {
            sqlConnection.Close();
        }
    }
    public void commit()
    {
        transaction.Commit();
    }
    public void rollBack()
    {
        transaction.Rollback();
    }
    public Boolean execute(SqlCommand cmd)
    {
        if (cmd == null) { return false; }
        cmd.Connection = sqlConnection;
        cmd.Transaction = transaction;
        try
        {
            if (null != cmd.ExecuteNonQuery())
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch
        {
            return false;
        }
    }
}