PDA

View Full Version : ساخت ديتابيس در هنگام ورود به برنامه اگر در SQL Server وجود نداشته باشد.



سيد مجتبي هاشمي
جمعه 14 فروردین 1388, 23:55 عصر
با سلام. دوستان كسي ميدونه چه طوري ميشه با كدنويسي كاري كرد كه برنامه پس از اجرا تست كند و اگر ديتابيس در SQL Server وجود نداشت آن را با تمام جدولهايش ايجاد كند تا بتواند از آن استفاده كند؟

merced
شنبه 15 فروردین 1388, 02:16 صبح
اگه AdoConnection به ديتابيس مورد نظرت متصل نشد پس وجود ندارد
اول بايد وجود SQL Server رو تست كني. اين رو با متصل شدن به بانك اطلاعاتي master چك كن.
حالا اگه SQL Server ‌بود و ديتابيس نبود . بايد اونو اجرا كني
به راحتي با ابزار Generate Scripts كه در SQL Server هست يه كد براي ديتابيس به يه ADOQuery بده تا برات بسازه (رويه GenerateSQLCode) و كانكت شو

اينم يه كد. الان نوشتم، كاملا تست نكردم. شما تست كن



try
ADOConnection1.Close ;
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master' ;
ADOConnection1.Open ;

ADOQuery1.SQL.Text := 'exec sp_helpdb ' ;

ADOQuery1.Open ;
if not ADOQuery1.Locate('name', yourDBname , []) then
raise Exception.Create('DB Not Exist') ;

ADOConnection1.Close ;
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+yourDBname ;
ADOConnection1.Open ;

except
on e : Exception do begin
if e.Message = 'Not DB Exist' then
GenerateSQLCode
else
ShowMessage('SQL Server Not Exist')

end ;
end ;

سيد مجتبي هاشمي
شنبه 15 فروردین 1388, 23:04 عصر
اگه AdoConnection به ديتابيس مورد نظرت متصل نشد پس وجود ندارد
اول بايد وجود SQL Server رو تست كني. اين رو با متصل شدن به بانك اطلاعاتي master چك كن.
[/code]

ميشه بيشتر توضيح بدين و يه كد هم به عنوان نمونه قرار بدي؟ ممنون.

merced
یک شنبه 16 فروردین 1388, 01:19 صبح
ميشه بيشتر توضيح بدين و يه كد هم به عنوان نمونه قرار بدي؟ ممنون.

همون كد بالا

hamidprogramer
سه شنبه 18 فروردین 1388, 23:17 عصر
'if Exists (select name from sys.databases where name = ' +
QuotedStr('DBNAME') + ')'
اگر شرط بالا برقرار بود ميتوني اطمينان حاصل كن كه ديتابيس مورد نظر در SQl موجود هست و متصل مي باشد و اگر شرط برقرار نبود اون رو بسازي من كد ساختن ديتابيس رو هم برايت ميفرستم.
به جاي DBNAME نام ديتابيس مورد نظر رو بنويس.

hamidprogramer
سه شنبه 18 فروردین 1388, 23:23 عصر
سلام؛
شما بهتر است به جاي ساختن بانك برنامه در SQL يكبار بانك را در SQL ساخته و فايلهاي آن را در كنار برنامه خود قرار داده و در هنگام اجراي برنامه متصل بودن آن را در SQl كنترل كني و در صورتي كه بانك شما در SQl موجود نبود آن را Attach كنيد.
براي Attach ديتابيس اين كد به شما كمك مي كنه:

With ADOCommand Do
Begin
CommandText :=
'Use Master ' + #13 +
'If Not Exists (Select Name from Sys.DataBases Where [Name] = ' +
QuotedStr(DB_Name) + ')' + #13 +
'Exec Sp_attach_db @dbname = ' + DB_Name + ',' + #13 +
'@filename1 = ' + QuotedStr(Filename1)+ ',' + #13 +
'@filename2 = ' + QuotedStr(Filename2);
CommandType := cmdText;
ConnectionString:= '...'
Execute;
end;{With}