برادر این دستور که دیدید catch (Exception ex)
{
if (!ShowFriendMessage)
LastError = ex.Message;
else
LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
}
که من از مقدار LastError += استفاده کردم من یه متغییر تعریف کردمدر کلاس DataAccess به نام
public static bool ShowFriendMessage = false;
که اگه مقدار برابر با false بود !ShowFriendMessage
مقدار پیغام اول رو نشان بده یعنی اشکال اصلی رو ولی اگه مقدار true بود در کلاس پیغام فارسی رو نشان بده دیگه این طوری لازم نیست هی دستورات رو عوض کنیم یه متغییر سراری تعریف مکنیم در کلاس و هی صداش میزنیم و با نوشتن مقدار خطا یعنی خطا 100 مربوط به دیتابیس هستش وقتی طرف تماس میگیر و میگه برنامه ایراد داره میگید کد چند میگه 100 میفهمید کدام فرم ایراد رو ایجاد کرده و میرید همان فرم رو میبینید و اشکالیش رو بر طرف میکنید.و با عوض کردن مقدار true یا false مقدار رو فارسی یا انگلیسی میکنید این دستور کلی کلاس من که برای کار با دیتابیس هستش یه با فرامیخونم و هزار بار صداش میزنیم و هی دستور وصل شدن به دیتابیس رو نمی نویسم.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Bername_Hesabdare_SayeBan_Poshak
{
class DataAccess
{
public static bool ShowFriendMessage = false;
public static string Server = "";
public static string DataBase = "";
public static string UserName = "";
public static string Password = "";
public static bool isExpress = true;
public static DataTable dt;
public SqlConnection con;
public SqlCommand cmd;
public SqlDataAdapter da;
public SqlCommandBuilder cb;
public string LastError = "";
public DataAccess()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cb = new SqlCommandBuilder();
dt = new DataTable();
cmd.Connection = con;
da.SelectCommand = cmd;
}
public void Connect()
{
try
{
string cs = "";
if (isExpress)
{
cs = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBHesabDarePoshakSayeBan.mdf;Integrated Security=True;User Instance=True";
}
else
{
cs = @"server=" + Server + ";database=" + DataBase + ";trusted_connection=yes;";
//cs = @"server=" + server + ";database=" + database + ";uid=" + user + ";pwd=" + password + ";";
}
con.ConnectionString = cs;
con.Open();
}
catch (Exception ex)
{
if (!ShowFriendMessage)
LastError = ex.Message;
else
LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
}
}
public void Disconnect()
{
con.Close();
}
public DataTable select(string sql)
{
try
{
cmd.CommandText = sql;
da.Fill(dt);
}
catch (Exception ex)
{
if (!ShowFriendMessage)
LastError = ex.Message;
else
LastError += "خطا در خواندن اطلاعات /خطا 101";
}
return dt;
}
public void DoCommand(string sql)
{
try
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
if (!ShowFriendMessage)
LastError += ex.Message;
else
LastError += " خطا در اجرا دستورات /خطا 102";
}
}
public string newid(string sql)
{
string AtCnt;
con.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.Connection = con;
AtCnt = Convert.ToString(cmd.ExecuteScalar());
con.Close();
return AtCnt;
}
public DataTable Search(string CTS)
{
if (con.State != ConnectionState.Open) con.Open();
dt = new DataTable();
cmd = new SqlCommand(CTS, con);
da = new SqlDataAdapter(cmd);
cb = new SqlCommandBuilder(da);
da.Fill(dt);
return (dt);
}
public DataTable I_U_D(string CTS, string CTSIDU)
{
if (con.State != ConnectionState.Open) con.Open();
dt = new DataTable();
cmd = new SqlCommand(CTS, con);
da = new SqlDataAdapter(cmd);
cb = new SqlCommandBuilder(da);
da.Fill(dt);
cmd.CommandText = CTSIDU;
cmd.ExecuteNonQuery();
return (dt);
}
}
}
من خودم تو فرم به این صورت تعریف میکنم برای نمایش خطا
if (db.LastError != "")
MessageBox.Show(db.LastError);
موفق باشید.