sa_ostad
دوشنبه 21 مرداد 1387, 21:16 عصر
یه کلاس برای کار با دیتابیس درست کردم به نام DataBase چند تا خاصیت هم براش تعریف کردم حالا وقتی می خوام داده هایی رو که بوسیله یه DataView از کلاس بخونم و در DataGrid نمایش بدم دفعه اول درست کار می کنه ولی دفعه دوم که قراره DataGrid اطلاعات جدول دیگه ای رو نمایش بده ستون های جدول قبلی هنوز هستن ! و ستون های جدول جدید به اونا اضافه میشن !
البته ستون های جدول قبلی خالی هستند و اطلاعات ندارن !
بدون کلاس امتحان کردم این مشکل نبود !
Command رو null کردم حل نشد . DataSet رو Clear کردم حل نشد . همه رو Dispose کردم بازم حل نشد !
دیگه فکرم به جایی نمی رسه .
به نظر شما چه کاری انجام بدم؟
این هم کلاسی که درست کردم:
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public class DataBase
{
private static SqlCommand mvarObjCommand;
private static SqlDataAdapter mvarObjDataAdapter;
private static DataSet mvarObjDataSet;
private static DataView mvarObjDataView;
private static SqlConnection mvarObjConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Matab;Integrated Security=True");
public static SqlCommand objCommand
{
set
{
if (mvarObjConnection == null)
{
mvarObjConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Matab;Integrated Security=True");
}
if (mvarObjConnection.State != ConnectionState.Open)
{
mvarObjConnection.Open();
}
if (mvarObjCommand == null)
{
mvarObjCommand = new SqlCommand();
mvarObjCommand.Connection = mvarObjConnection;
}
mvarObjCommand = value;
mvarObjCommand.Connection = mvarObjConnection;
}
}
public static CommandType objCommandType
{
set
{
mvarObjCommand.CommandType = value;
}
}
public static string Type
{
set
{
string mvarType = "";
mvarType = value;
switch (mvarType)
{
case "Fill":
if (mvarObjDataAdapter == null)
{
mvarObjDataAdapter = new SqlDataAdapter();
}
mvarObjDataAdapter.SelectCommand = mvarObjCommand;
if (mvarObjDataSet == null)
{
mvarObjDataSet = new DataSet();
}
try
{
mvarObjDataAdapter.Fill(mvarObjDataSet, "Table");
mvarObjCommand = null;
mvarObjDataAdapter = null;
mvarType = null;
mvarObjConnection.Close();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
}
mvarObjDataView = new DataView(mvarObjDataSet.Tables["Table"]);
mvarType = "";
break;
case "NonQuery":
try
{
mvarObjCommand.ExecuteNonQuery();
MessageBox.Show("عملیات با موفقیت انجام شد");
mvarObjCommand = null;
mvarType = null;
mvarObjConnection.Close();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
}
mvarObjConnection.Close();
mvarType = "";
break;
case "Clear":
mvarObjDataSet.Clear();
mvarType = "";
break;
}
}
}
public static DataView objDataView
{
get
{
return mvarObjDataView;
}
}
}
البته ستون های جدول قبلی خالی هستند و اطلاعات ندارن !
بدون کلاس امتحان کردم این مشکل نبود !
Command رو null کردم حل نشد . DataSet رو Clear کردم حل نشد . همه رو Dispose کردم بازم حل نشد !
دیگه فکرم به جایی نمی رسه .
به نظر شما چه کاری انجام بدم؟
این هم کلاسی که درست کردم:
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
public class DataBase
{
private static SqlCommand mvarObjCommand;
private static SqlDataAdapter mvarObjDataAdapter;
private static DataSet mvarObjDataSet;
private static DataView mvarObjDataView;
private static SqlConnection mvarObjConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Matab;Integrated Security=True");
public static SqlCommand objCommand
{
set
{
if (mvarObjConnection == null)
{
mvarObjConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=Matab;Integrated Security=True");
}
if (mvarObjConnection.State != ConnectionState.Open)
{
mvarObjConnection.Open();
}
if (mvarObjCommand == null)
{
mvarObjCommand = new SqlCommand();
mvarObjCommand.Connection = mvarObjConnection;
}
mvarObjCommand = value;
mvarObjCommand.Connection = mvarObjConnection;
}
}
public static CommandType objCommandType
{
set
{
mvarObjCommand.CommandType = value;
}
}
public static string Type
{
set
{
string mvarType = "";
mvarType = value;
switch (mvarType)
{
case "Fill":
if (mvarObjDataAdapter == null)
{
mvarObjDataAdapter = new SqlDataAdapter();
}
mvarObjDataAdapter.SelectCommand = mvarObjCommand;
if (mvarObjDataSet == null)
{
mvarObjDataSet = new DataSet();
}
try
{
mvarObjDataAdapter.Fill(mvarObjDataSet, "Table");
mvarObjCommand = null;
mvarObjDataAdapter = null;
mvarType = null;
mvarObjConnection.Close();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
}
mvarObjDataView = new DataView(mvarObjDataSet.Tables["Table"]);
mvarType = "";
break;
case "NonQuery":
try
{
mvarObjCommand.ExecuteNonQuery();
MessageBox.Show("عملیات با موفقیت انجام شد");
mvarObjCommand = null;
mvarType = null;
mvarObjConnection.Close();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
}
mvarObjConnection.Close();
mvarType = "";
break;
case "Clear":
mvarObjDataSet.Clear();
mvarType = "";
break;
}
}
}
public static DataView objDataView
{
get
{
return mvarObjDataView;
}
}
}