PDA

View Full Version : حرفه ای: کندی یک کد یکسان با توجه به دو نوع ارتباط مختلف با بانک



CYCLOPS
دوشنبه 14 تیر 1389, 18:59 عصر
سلام
دوستان من 2000 هزار تا رکورد تو دیتا بیسم دارم

یه بار با استفاده از این کد با بانک کار میکنم :

namespace my_namespace
{
class sqlWork
{
private string con_string;
private SQLConnection con;
public SQLCommand cmd;
private SQLDataAdapter da;

public sqlWork( string connection_string )
{
con_string = connection_string;
con = new SQLConnection(con_string);
cmd = new SQLCommand();
da = new SQLDataAdapter();
}

public DataTable select_command(string select_text,bool setPK)
{
DataTable Result = new DataTable();
cmd.CommandText = select_text;
cmd.Connection = con;
da.SelectCommand = cmd;
if (con.State != ConnectionState.Open)
con.Open();
if (setPK) da.FillSchema(Result, SchemaType.Source);
da.Fill(Result);
con.Close();
return Result;
}

public string scalar_command(string select_text)
{

cmd.CommandText = select_text;
cmd.Connection = con;
if (con.State != ConnectionState.Open)
con.Open();
object objResult = cmd.ExecuteScalar();
string Result;
if (objResult == null)
{
con.Close();
return "";
}
else
Result = (cmd.ExecuteScalar()).ToString();
//string Result = (cmd.ExecuteScalar()).ToString();
con.Close();
return Result;
}

public void other_command(string command_text)
{
cmd.CommandText = command_text;
cmd.Connection = con;
if (con.State != ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}

// this method insert data in DB and return inserted rows id
public string other_command_insert_mode(string command_text)
{

cmd.CommandText = command_text;
cmd.Connection = con;
if (con.State != ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT last_insert_rowid();";
string Result = (cmd.ExecuteScalar()).ToString();
con.Close();
return Result;
}
}
}


و یه بار با استفاده از ویزارد به بانکم کانکت میشم در هر دو این حالت ها بعد از اتصال و نمایش رکورد ها با استفاده از کد موجود در این لینک (http://techisolutions.blogspot.com/2008/02/datagridview-checkbox-select-all.html)اقدام به check all و uncheck all ستون ای از گرید ام از نوع چک باکس میکنم (این نکته رو هم بگم که این ستون در دیتا بیس وجود نداره و من اون رو برای حذف رکوردها به صورت دستی اضافه کردم)
حالا مشکل اینه که زمانی که با استفاده از کد خودم دستی به بانک کانکت میشم و اطلاعات رو استخراج میکنم و به گرید بایند میکنم در زمان استفاده از check all و uncheck all اینقدر سرعت کد پایینه که میشه چک خوردن سطر به سطر رکورد ها رو دید و برای 2000 رکورد نزدیک به 3 دقیقه طول میکشه ولی زمانی که با ویزارد به بانک کانکت میشم بالافاصله بعد از چک کردن همه 2000 سطر چک میخوره و این مشکل واقعا کلافم کرده
مشکل از چه قراره ؟؟
ممنون میشم راهنماییم کنید ؟؟
کد خودم رو چطور اصلاح کنم که درست کار کنه ؟؟

دنیای دلفی
دوشنبه 14 تیر 1389, 20:09 عصر
بانك اطلاعاتي SQL SERVER است

CYCLOPS
دوشنبه 14 تیر 1389, 20:12 عصر
بانك اطلاعاتي SQL SERVER است
نه بانک SQLite (http://sqlite.phxsoftware.com/)هست
تفاوت خاصی داره ؟؟
ایرادی که وجود داره منطقی نیست ؟؟ و کندی خیلی محسوسه :ناراحت:

CYCLOPS
سه شنبه 15 تیر 1389, 07:04 صبح
دوستان من واقعا دیگه شاخ درآوردم :متعجب: :متعجب: :متعجب:
میدونید مشکل از چی بود ؟؟؟ :قهقهه:

خاصیت AutoSizeColumnsMode در دیتاگرید دات نت
فکر کنم این یه باگ تو دات نت باشه

زمانی که خاصیت AutoSizeColumnsMode رو روی AllCells تنظیم میکنم هم بایند تو گرید کند میشه و هم عمل check all ولی زمانی که مثلا روی DisplayedCells تنظیم میشه همه چی درسته و کد خودم هم بدون مشکل کار میکنه .
واقعا کشف جالبی بود :چشمک:

حالا کسی دلیل این موضوع رو میدونه ؟؟
آیا این باگ هست یا چون دات نت میخواد تمام سلول ها رو در حالت AllCells چک کنه این موضوع پیش میاد ؟؟

#aliyari_C
سه شنبه 15 تیر 1389, 14:07 عصر
سلام
دو حالت وجود دارد:
1. شايد در پياده سازي الگوريتم مشكل داري يعني الگوريتم كه براي تابع مورد نظرت نوشتي رو جور ديگه ژياده سازي كن مثلا با استفاده از تابع بازگشت اين كار رو كن
2. چون از كلاس داري استفاده مي كني , يه سري هم به موضوع زباله روب هم بزن .

موفق باشي

CYCLOPS
سه شنبه 15 تیر 1389, 14:39 عصر
دوست عزیز ممنون از راهنماییت ولی همون طور که گفتم (http://barnamenevis.org/forum/showpost.php?p=1033019&postcount=4) مشکل حل شد .
کد کلاس کار با داده ها تو پست اول همین تاپیک (http://barnamenevis.org/forum/showpost.php?p=1032737&postcount=1) هست من که مشکلی توش پیدا نکردم چون تا حالا زیاد ازش استفاده کردم .