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 سطر چک میخوره و این مشکل واقعا کلافم کرده
مشکل از چه قراره ؟؟
ممنون میشم راهنماییم کنید ؟؟
کد خودم رو چطور اصلاح کنم که درست کار کنه ؟؟
دوستان من 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 سطر چک میخوره و این مشکل واقعا کلافم کرده
مشکل از چه قراره ؟؟
ممنون میشم راهنماییم کنید ؟؟
کد خودم رو چطور اصلاح کنم که درست کار کنه ؟؟