PDA

View Full Version : آپدیت پایگاه داده مثل اپدیت نرم افزار



mansour161
سه شنبه 27 مرداد 1394, 02:13 صبح
با سلام
آپدیت پایگاه داده مثل اپدیت نرم افزار از طریق نت (یعنی یه چند تا فیلد یا تیبل اضافه کردیم به پایگاه داده ، کاربر بتونه با استفاده از گزینه آپدیت پایگاه داده ، پایگاه داده رو هم آپدیت کنه )
ممنون میشم راهنمایی کنید

محمد رضا فاتحی
سه شنبه 27 مرداد 1394, 16:12 عصر
می تونید دستورات اسکیوال رو داخل یه فایل قرار بدید روی هاست و پس از دریافت فایل توسط برنامه تو مراحل اپدیتون دستورات اسکیوال داخل فایل رو توسط کانکشن پایگاه داده برنامه اجرا کنید پایگاه داده آپدیت میشه

korosh00
سه شنبه 27 مرداد 1394, 17:51 عصر
سلام
میشه آپدیت دیتابیس زو کاملتر توضیح بدید ؟
مثلا بیاد رکوردهای رو بشماره هر چی امروز اضافه شده بود یا کلا اضافه شده بود رو بیاره ؟
ممنون

mansour161
سه شنبه 27 مرداد 1394, 23:56 عصر
با سلام خواهشا رهنمایی زیاد کنید

mansour161
جمعه 30 مرداد 1394, 10:44 صبح
با سلام دوستان کسی هست برا ما ۀپدیت پایگاه داده رو باز گو کنه ممنون میشم کد ساده ای هم باشه برامون ایده بده ممنون میشم

omid nasri
جمعه 30 مرداد 1394, 11:44 صبح
توضیحات کامل نیست.

mansour161
جمعه 30 مرداد 1394, 19:30 عصر
با سلام
ببینید بنده برنامه نوشتم و دادم بیرون دارن استفاده میکنن.
و من الات برا نرم افزارم آپدیت می خوام بدم بیرون که باید فیلدهای پایگاه داده هم اپدیت بشه.
ولی نمی دونم چطور پایگاه داده رو آپدیت کنم
ممنون میشم راهنمایی کنید

محمد رضا فاتحی
شنبه 31 مرداد 1394, 07:26 صبح
من یه توضیح کوچولو بدم
فرض کنید یه جدول دارید به اسم student که بعد از ارائه نرم افزار یه ستون به اون اضافه شده به نام std_fathername و با نوع nvarchar(50)...
خوب حالا دستور SQL برای انجام اینکار چیه؟؟
alter table student add std_fathername nvarchar(50)
خوب این دستور SQL برای انجام این آپپدیت... بقیه تغییرات مانند اضافه کردن جدول ، اضافه کردن پروسیجر و .... هم اسکریپت مختص خودشون رو دارند...
دستورات مورد نظر خودتون رو با یه فرمت دلخواه داخل یه فایل متنی ، XML یا هر چی ذخیره می کنید و درون یه هاست آپلود می کنید...
روی نرم افزار یه قابلیت ارائه می دید به نام آپدیت مثلا یه دکمه داره
توی این دکمه چه کارهایی باید انجام بشه؟؟؟
1-دانلود فایل که مسلما مسیر و نامش همیشه یکسانه مگه با یه ترفندهایی بشه عوضش کرد مثلا با بدست آوردن نسخه جاری و ....
2-خوندن فایل و بدست آوردن دستورات SQL از فایل!! البته باید اون فرمت دلخواه رو رعایت کرد
3- اجرای اسکریپت SQL روی سیستم مشتری با کانکشن اون سیستم....

تمام!

abdullah20
شنبه 31 مرداد 1394, 09:25 صبح
بروز رسانی دیتابیس با نرم افزار فرق داره چون اگر قرار است تغییری در دیتابیس سیستم مقصد ایجاد شود باید مواظب باشید اطلاعات دیتابیس کاربر از بین نرود
ولی در نرم افزار شما دستتون بازه و حتی میتونید برنامه را پاک کنید
پس در نوشتن دستورت بروزرسانی خیلی مواظب باشید چون با یک دستوری که شما به اشتباه وارد کنید امکان داره ضرر زیادی به کاربر وارد بشه و شما به دردسر بیافتید
و وقتی اقدام به بروزرسانی دیتابیس میکنید چندین بار دستورات و کد ها را بررسی کنید

محمد رضا فاتحی
شنبه 31 مرداد 1394, 09:27 صبح
بله درسته...در کل باید مواظب پایگاه داده و اتفاقاتی که ممکنه با اجرای اسکریپت رخ بده بود....
خود من یکبار بدون حواس جمعی 10000 رکورد حیاتیم پر کشید رفت!!!:متفکر::افسرده:

korosh00
شنبه 31 مرداد 1394, 15:27 عصر
من میگن بیاد بینه تعداد رکوردهای جدول مقصد و منبع چند تا است .
بعد هر رکوردی هم یک آی دی داره . بیاد بگه از این آی دی به بعد اگه تو دیتابیس کامپیوتر نبود اونها را دانلود کنه یا همون اینزرت کنه تو دیتابیس کامپیوتر .
این راه خوبی نیست ؟
حالا نحوی اینزرت کردن اون رکوردها ؟؟
ممنون

mansour161
شنبه 31 مرداد 1394, 23:24 عصر
دوستان لطف کنن یه سورس ساده بزارن

با تشکر

mansour161
شنبه 31 مرداد 1394, 23:58 عصر
فکر کنم با این کدها بشه یه کارایی کرد



public static string CreateTABLEPablo(string connectionString, string tableName, System.Data.DataTable table)
{
string sqlsc;
//using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionStri ng))
using (System.Data.OleDb.OleDbConnection connection = new System.Data.OleDb.OleDbConnection(connectionString ))
{
connection.Open();
sqlsc = "CREATE TABLE " + tableName + "(";
for (int i = 0; i < table.Columns.Count; i++)
{
sqlsc += "\n" + table.Columns[i].ColumnName;
if (table.Columns[i].DataType.ToString().Contains("System.Int32"))
sqlsc += " int ";
else if (table.Columns[i].DataType.ToString().Contains("System.DateTime"))
sqlsc += " datetime ";
else if (table.Columns[i].DataType.ToString().Contains("System.String"))
sqlsc += " nvarchar(" + table.Columns[i].MaxLength.ToString() + ") ";
else if (table.Columns[i].DataType.ToString().Contains("System.Single"))
sqlsc += " single ";
else if (table.Columns[i].DataType.ToString().Contains("System.Double"))
sqlsc += " double ";
else
sqlsc += " nvarchar(" + table.Columns[i].MaxLength.ToString() + ") ";



if (table.Columns[i].AutoIncrement)
sqlsc += " IDENTITY(" + table.Columns[i].AutoIncrementSeed.ToString() + "," + table.Columns[i].AutoIncrementStep.ToString() + ") ";
if (!table.Columns[i].AllowDBNull)
sqlsc += " NOT NULL ";
sqlsc += ",";
}

string pks = "\nCONSTRAINT PK_" + tableName + " PRIMARY KEY (";
for (int i = 0; i < table.PrimaryKey.Length; i++)
{
pks += table.PrimaryKey[i].ColumnName + ",";
}
pks = pks.Substring(0, pks.Length - 1) + ")";

sqlsc += pks;
connection.Close();

}
return sqlsc + ")";
}