منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال في حذف جداول قاعدة البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

لعلكم جميعا بخير ان شاء الله

عندي قاعدة بيانات سيكوال

واريد انه عند الضغط علي زر معين يقوم البرنامج بحذف كافة الجداول الموجوده في قاعدة البيانات مهما كان عددها

بمعني ان يجعل قاعدة البيانات فارغه من جميع الجداول 

وبارك الله فيكم جميعا
PHP كود :
use [TestTestD]
declare @
SQL nvarchar(max)=''
declare @SQLV nvarchar(max)=''
declare @SQLT nvarchar(max)=''
SELECT @SQL STUFF((SELECT ', ' quotename(TABLE_SCHEMA) + '.' quotename(TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES WHERE Table_Name LIKE '%'
FOR XML PATH('')),1,2,'')
SET @SQLT 'DROP TABLE ' + @SQL
SET 
@SQLV 'DROP View ' + @SQL
PRINT @SQLT
PRINT @SQLV
EXECUTE 
(@SQLT) -- uncomment to actually delete the tables
EXECUTE 
(@SQLV) -- uncomment to actually delete the View 
(10-04-20, 04:22 AM)asemshahen5 كتب : [ -> ]
PHP كود :
use [TestTestD]
declare @
SQL nvarchar(max)=''
declare @SQLV nvarchar(max)=''
declare @SQLT nvarchar(max)=''
SELECT @SQL STUFF((SELECT ', ' quotename(TABLE_SCHEMA) + '.' quotename(TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES WHERE Table_Name LIKE '%'
FOR XML PATH('')),1,2,'')
SET @SQLT 'DROP TABLE ' + @SQL
SET 
@SQLV 'DROP View ' + @SQL
PRINT @SQLT
PRINT @SQLV
EXECUTE 
(@SQLT) -- uncomment to actually delete the tables
EXECUTE 
(@SQLV) -- uncomment to actually delete the View 

الف شكر  اخي عاصم جزاك الله عنا كل خير
طبقت الكود ونجح في انه حدف جميع الجداول ولكن ظهر الخطأ التالي
PHP كود :
DROP TABLE [dbo].[Table_1], [dbo].[Table_2], [dbo].[Table_3], [dbo].[Table_4], [dbo].[Table_5]
DROP View [dbo].[Table_1], [dbo].[Table_2], [dbo].[Table_3], [dbo].[Table_4], [dbo].[Table_5]
Msg 3701Level 11State 5Line 1
Cannot drop the view 
'dbo.Table_1'because it does not exist or you do not have permission.
Msg 3701Level 11State 5Line 1
Cannot drop the view 
'dbo.Table_2'because it does not exist or you do not have permission.
Msg 3701Level 11State 5Line 1
Cannot drop the view 
'dbo.Table_3'because it does not exist or you do not have permission.
Msg 3701Level 11State 5Line 1
Cannot drop the view 
'dbo.Table_4'because it does not exist or you do not have permission.
Msg 3701Level 11State 5Line 1
Cannot drop the view 
'dbo.Table_5'because it does not exist or you do not have permission
عدل الاستعلام الى :

PHP كود :
--EXECUTE (@SQLV) -- uncomment to actually delete the View 
(10-04-20, 05:31 AM)asemshahen5 كتب : [ -> ]عدل الاستعلام الى :

PHP كود :
--EXECUTE (@SQLV) -- uncomment to actually delete the View 

ظهر لي خطأ اخر وهو
اعتزر علي ازعاجك اخي

PHP كود :
Msg 3705Level 16State 1Line 1
Cannot 
use DROP TABLE with 'dbo.ReceiptQuery' because 'dbo.ReceiptQuery' is a view. Use DROP VIEW
هل تقصد جداول تخص قاعدة بياناتك؟
استخدم command للحذف ومرر له drop table tablename
ونفذ

كود من مثال عندي:
PHP كود :
Dim dop As New SqlCommand("DROP TABLE flvs,cpus,comments,lovers"con)
 
dop.ExecuteNonQuery() 
أكيد لا بد من فتح الاتصال
flvs,cpus,comments,lovers أسماااااء جداول
(10-04-20, 06:59 AM)سعود كتب : [ -> ]هل تقصد جداول تخص قاعدة بياناتك؟
استخدم command للحذف ومرر له drop table tablename
ونفذ

كود من مثال عندي:
PHP كود :
Dim dop As New SqlCommand("DROP TABLE flvs,cpus,comments,lovers"con)
 
dop.ExecuteNonQuery() 
أكيد لا بد من فتح الاتصال
flvs,cpus,comments,lovers أسماااااء جداول


أشكرك أخي سعودعلي مروركم الطيب
ولكن اري ان هده الطريقه صعبه شويه لو كان عدد الجداول كثيره
فمابالك لو كان هناك 100 جدول مثلا؟
طيب لو تحذف قاعدة البيانات كلها مو اسهل اذا لم تجد طريقة!
يبدو انه يوجد عندك view مرتبطة بالجداول احذف ال views ثم احذف الجداول
جربت كود ونجح معي ومسالة الامور الاخرى لا اعلم عنها واقصد ماتحدث به الاخوة لاني عملت جداول جديدة وحذفتها بالكود مرة واحدة

اولا ضع مربع نص لتضع به جملة الاتصال كاملة وليكن اسمها TextBox1
اكتب الدالة التالية:
PHP كود :
 Function drop(str As Stringtt As String) As String
        Using con 
As New SqlClient.SqlConnection(str)
 
           Using cm As New SqlClient.SqlCommand(""con)
 
               cm.CommandText "DROP TABLE " tt ""
 
               If con.State ConnectionState.Closed Then con.Open()
 
               Try
                    cm
.ExecuteNonQuery()
 
                   Return "Droped... " tt " "
 
               Catch ex As Exception
                    Return Err
.Description
                End 
Try

 
               If con.State ConnectionState.Open Then con.Close()
 
           End Using
        End Using
    End 
Function 

النقطة الاهم واللتي تبحث عنها على مااظن هي بالكود التالي:
PHP كود :
Using con As New SqlClient.SqlConnection(TextBox1.Text)
 
           'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
            Using cm As New SqlClient.SqlCommand("", con)
                cm.CommandText = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES"
                If con.State = ConnectionState.Closed Then con.Open()
                Dim dr As SqlClient.SqlDataReader = cm.ExecuteReader
                Do While dr.Read
                    MsgBox(drop(TextBox1.Text, dr(0).ToString))
                Loop
                dr.Close()
                If con.State = ConnectionState.Open Then con.Close()
            End Using
        End Using 
ارجو تعطيني خبر اذا  هذه الاكواد عملت عندك.
تنبيه!
تحتاج تمرير هذه الجملة بكود الاتصال:
PHP كود :
MultipleActiveResultSets=True
وهي لتمكين تعدد مهام القاريء(حسب تعبيري وفهمي)

[مشروع] [ليس جديد - بل تجديد Tables Droper]

بصراحة يوجد اشخاص بالمنتدى يشجعون على البذل والمساعدة وتقديم كل ماهو مفيد
الصفحات : 1 2