رفتن به مطلب
  • 0

اضافه کردن ستون جدید به دیتابیس و ارور برنامه بعد از آپدیت


mahfelsoft

سوال

سلام دوستان

من یه دیتابیس دارم که مطالب داخلش رو خود کاربر از توی برنامه واردش میکنه . و من توی دیتابیس فقط اسم ستون ها رو قرار دادم .

حالا توی آپدیت جدید میخوام یه ستون جدید به دیتابیس اضافه کنم . اما وقتی برنامه رو ران می گیرم ارور میده که همچین ستونی وجود نداره .

مشکل همیشگی با آدیت دیتابیس ....

اینو باید چکار کنم ؟؟؟؟

در ضمن آموزش ذخیره علاقه مندی در مپ رو هم دیدم ولی فکر کنم مشکل من فرق داره ...

لطفا راهنمایی کنید ...

لینک ارسال
به اشتراک گذاری در سایت های دیگر

11 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

ممنون آقای شاهپیری  . کدهاتون رو خوندم . فقط بعضی جاهاش رو متوجه نشدم . لطف بفرمایید یه توضیح مختصر راجع بهش بدید   .ممنون میشم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/07/17, 23:52:42، محمدرضا شاهپیری گفته است :

با این متد میتونید چک کنید فلان ستون موجوده یا نه فقط اسم تیبل و اسم ستون رو وارد کن


Sub chek(MyTable As String,name As String) As Boolean
Dim Cursor1 As Cursor
Cursor1=db.ExecQuery("SELECT * FROM "&MyTable&" LIMIT 1")         اینجا اومدیم کل ستونا رو گرفتیم
Cursor1.Position=0
Dim cols As Int = Cursor1.ColumnCount            اینجا تعدادشون رو ذخیره کردیم
Dim MyColName(cols) As String             یه آرایه به تعداد ستونها از جنس استرینگ تعریف کریف کردیم
Dim NewColumn As String=name
Dim Flag As Boolean =False
For i=0 To Cursor1.ColumnCount-1                                 true   از اینجا به بعد یه حلقه نوشتیم که میاد به ترتیب ستونا رو چک میکنه اگه اسم ستون با اسمی که دادی یکی بود از حلقه میاد بیرون و مقدار 
    MyColName(i)=Cursor1.GetColumnName(i)                برمیگردونه این یعنی ستون از قبل موجود بوده در غیر این صورت حلقه تا آخر میره و همه رو چک میکنه اگه هیچ کدوم با اسمی که دادین یکی 
    If MyColName(i)= NewColumn Then                                                          بر میگردونه یعنی ستون از قبل موجود نبوده  false  نبود مقدار 
     Flag=True
	 Return Flag
	 Exit
	 Else
	Continue
    End If
	Next
	Return Flag
End Sub

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیر اول متد رو اجرا کن اگه نتیجه false بود بعد ستون رو اضافه کن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

یه کوئری بذارید توی برنامه براتون انجام بده هموطن

مثلا 3 تا ستون دارید 
میخواین چهارمی هم اضافه شه

Dim sq As SQL
Dim cur As Cursor = sq.ExecQuery("SELECT * FROM tbl")
If cur.ColumnCount = 3 Then
	Dim query As String = "ALTER TABLE tbl ADD [password] INT"
	sq.ExecNonQuery(query)
End If

این میاد چک میکنه

اگر 3 تا ستون داشتید

یه ستون جدید به اسم پسورد براتون ایجاد میکنه که کاملا هم خالی هست...

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من کدهام به این شکل شد اما باز همون ارور رو میده

 

	If File.Exists(File.DirInternal,"bank2.db") = False Then
	File.Copy(File.DirAssets,"bank2.db",File.DirInternal,"bank2.db")
	End If
	sql1.Initialize(File.DirInternal,"bank2.db",True)
	cur1 = sql1.ExecQuery("select * from tbl")
	
If cur1.ColumnCount = 9 Then
	Dim query As String = "ALTER TABLE tbl ADD [moshtari] TEXT"
	sql1.ExecNonQuery(query)
End If

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

چطوری میتونم بگم که اگر ستون "مشتری" وجود نداشت بعد فلان کار رو بکن ؟

 

در حقیقت میخوام چک کنم که فلان ستون در جدول وجود داره یا نه

 

 

اون مشکل اول خودم رو حل کردم با این ساب :

Sub CreateColumn(tableName As String,columnName As String,columnType As String)
    sql1.ExecNonQuery("ALTER TABLE "&tableName&" ADD COLUMN "&columnName&" "&columnType)
End Sub

و بعد با این کد ستون رو اضافه کردم

CreateColumn("tbl","moshtari","TEXT")

حالا لطفا سوال این پستم رو جواب بدید ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما یه ترای کچ میذاری

اگر اون ستون نباشه

ارور میگیره اذت

پس توی قسمت catch میتونی کداتو بنویسی

Dim sq As SQL
Dim cur As Cursor = sq.ExecQuery("SELECT * FRM tbl")
Try
	Dim s As String = cur.GetString("shahab")
Catch
	Log(LastException)
	'
	'
	'code haye shoma
	'
	'
	
End Try

اسم جدولت هم اگر Tbl نیست درست کن

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنونم اما کلا میخوام بدونم کدی برای این نیست ؟

که چک کنیم که فلان ستون در جدول وجود داره یا نه ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

با این متد میتونید چک کنید فلان ستون موجوده یا نه فقط اسم تیبل و اسم ستون رو وارد کن

Sub chek(MyTable As String,name As String) As Boolean
Dim Cursor1 As Cursor
Cursor1=db.ExecQuery("SELECT * FROM "&MyTable&" LIMIT 1")
Cursor1.Position=0
Dim cols As Int = Cursor1.ColumnCount
Dim MyColName(cols) As String
Dim NewColumn As String=name
Dim Flag As Boolean =False
For i=0 To Cursor1.ColumnCount-1
    MyColName(i)=Cursor1.GetColumnName(i)
    If MyColName(i)= NewColumn Then
     Flag=True
	 Return Flag
	 Exit
	 Else
	Continue
    End If
	Next
	Return Flag
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...