PDA

View Full Version : ایجاد کلاس کانکشن برای دیتابیس sql



mahdieh5
پنج شنبه 17 شهریور 1390, 00:33 صبح
سلام
یک کلاس کانکشن برای اتصال به دیتابیس sql میخواستم که در آن کلاس توابعی برای اجرای کویری ها داشته باشد. این کد را نوشتم ولی برای کویری select کار نمیکنه. اگر ممکنه یک کد اصولی تر بفرمایید ممنون میشم که برای همه کویری ها کاربرد داشته باشه.
class Connection1
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=amozesh;Integrated Security=True");

public void sqlQuery1(String sql)
{
SqlCommand com = new SqlCommand(sql,con);
con.Open();
com.ExecuteNonQuery();
con.Close();
}}

wolf_majid
پنج شنبه 17 شهریور 1390, 07:47 صبح
سلام دوست عزیز
ما در Sql دو نوع querry داریم : 1- select که یک مقداری را بر می گردونه (معمولا" dataTable )
2- بقیه query ها که مقداری را بر نمی گردونند
این کدی که تو نوشتی برای گروه دومه . به عنوان راهنمایی کد گروه اول رو می ذارم

اول اعضای خصوصی کلاس را تعریف کن
#region private members
//************************************************** *************************************************
// تعریف ابزارهای اتصال
private SqlConnection cn =
new SqlConnection("Data Source=.;Initial Catalog=amozesh;Integrated Security=True");
private SqlDataAdapter da;
private SqlCommand cm;
private DataTable dt;

//************************************************** *************************************************
#endregion

و اما در مورد تابع select :

/// <summary>
/// Select Data Of Sql Database
/// </summary>
/// <param name="conString"></param>
/// <returns></returns>
public DataTable Select(string conString)
{
cm = new SqlCommand();
cm.CommandText = conString;
cm.CommandType = CommandType.Text;
cm.Connection = cn;
da = new SqlDataAdapter(cm);
dt = new DataTable();
try
{
da.Fill(dt);
}
catch (SqlException ex)
{
exception(ex);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);

}
return dt;
}

و :

/// <summary>
/// انتخاب بر اساس رویه ورودی با قابلیت ارسای پارامتر به رویه .
/// با در نظر گرفتن نوع فیلدها
/// </summary>
/// <param name="strRequests"></param>
/// <param name="strResponses"></param>
/// <param name="strProcedureName"></param>
/// <returns></returns>
public DataTable SelectWithProcedure(string[] strRequests, SqlDbType[] requestTypes, ArrayList arrayResponses, string strProcedureName)
{
cm = new SqlCommand();
cm.CommandText = strProcedureName;
cm.CommandType = CommandType.StoredProcedure;
cm.Connection = cn;
for (int i = 0; i < strRequests.Length; i++)
{
cm.Parameters.Add(strRequests[i], requestTypes[i]).Value = arrayResponses[i];
}
da = new SqlDataAdapter(cm);
dt = new DataTable();
try
{
da.Fill(dt);
}
catch (SqlException ex)
{
exception(ex);
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);
}
return dt;
}

و ....