سوال flash.data.SQLConnection

e_naderlou

Member
سلام دوستان
1- آیا کسی هست با flash.data.SQLConnection کار کرده باشه؟
2- ارتباط مستقیم با SQLServer توسط فلش امکان داره؟

چند وقتیه دنبال این سوالم ولی به جایی نرسیدم .
 

e_naderlou

Member
من توی help یه چیزایی شبیه این دیدم ولی نتونستم چیز زیادی متوجه بشم البته اگه مشکل کانکشنم حل بشه فکر میکنم راه هموارتر بشه
PHP:
package
{
    import flash.data.SQLConnection;
    import flash.data.SQLResult;
    import flash.data.SQLStatement;
    import flash.display.Sprite;
    import flash.events.SQLErrorEvent;
    import flash.events.SQLEvent;
    import flash.filesystem.File;
    
    public class MultiInsertTransactionExample extends Sprite
    {
        private var conn:SQLConnection;
        private var insertEmployee:SQLStatement;
        private var insertPhoneNumber:SQLStatement;
        
        public function MultiInsertTransactionExample():void
        {
            // define where to find the database file
            var appStorage:File = File.applicationStorageDirectory;
            var dbFile:File = appStorage.resolvePath("ExampleDatabase.db");
            
            // open the database connection
            conn = new SQLConnection();
            conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            conn.addEventListener(SQLEvent.OPEN, openHandler);
            conn.openAsync(dbFile);
        }
        
        // Called when the database is connected
        private function openHandler(event:SQLEvent):void
        {
            conn.removeEventListener(SQLEvent.OPEN, openHandler);
            
            // start a transaction
            conn.addEventListener(SQLEvent.BEGIN, beginHandler);
            conn.begin();
        }
        
        // Called when the transaction begins
        private function beginHandler(event:SQLEvent):void
        {
            conn.removeEventListener(SQLEvent.BEGIN, beginHandler);
            
            // create and execute the first SQL statement:
            // insert an employee record
            insertEmployee = new SQLStatement();
            insertEmployee.sqlConnection = conn;
            insertEmployee.text = 
                "INSERT INTO employees (lastName, firstName, email) " + 
                "VALUES (:lastName, :firstName, :email, :birthday)";
            insertEmployee.parameters[":lastName"] = "Smith";
            insertEmployee.parameters[":firstName"] = "Bob";
            insertEmployee.parameters[":email"] = "[email protected]";
            insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12);
            
            insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler);
            insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            
            insertEmployee.execute();
        }
        
        // Called after the employee record is inserted
        private function insertEmployeeHandler(event:SQLEvent):void
        {
            insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler);
            insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
            
            // Get the employee id of the newly created employee row
            var result:SQLResult = insertEmployee.getResult();
            var employeeId:Number = result.lastInsertRowID;
            
            // Add a phone number to the related phoneNumbers table
            insertPhoneNumber = new SQLStatement();
            insertPhoneNumber.sqlConnection = conn;
            insertPhoneNumber.text =
                "INSERT INTO phoneNumbers (employeeId, type, number) " +
                "VALUES (:employeeId, :type, :number)";
            insertPhoneNumber.parameters[":employeeId"] = employeeId;
            insertPhoneNumber.parameters[":type"] = "Home";
            insertPhoneNumber.parameters[":number"] = "(555) 555-1234";
            
            insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
            insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            
            insertPhoneNumber.execute();
        }
        
        // Called after the phone number record is inserted
        private function insertPhoneNumberHandler(event:SQLEvent):void
        {
            insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler);
            insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler);
            
            // No errors so far, so commit the transaction
            conn.addEventListener(SQLEvent.COMMIT, commitHandler);
            conn.commit();
        }
        
        // Called after the transaction is committed
        private function commitHandler(event:SQLEvent):void
        {
            conn.removeEventListener(SQLEvent.COMMIT, commitHandler);
            
            trace("Transaction complete");
        }
        
        // Called whenever an error occurs
        private function errorHandler(event:SQLErrorEvent):void
        {
            // If a transaction is happening, roll it back
            if (conn.inTransaction)
            {
                conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler);
                conn.rollback();
            }
            
            trace(event.error.message);
            trace(event.error.details);
        }
        
        // Called when the transaction is rolled back
        private function rollbackHandler(event:SQLEvent):void
        {
            conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler);
            
            // add additional error handling, close the database, etc.
        }
    }
}
 

++Hadi++

Active Member
برا خروجی air باید خروجیتونو به air پابلیش بگیرین .آیا برا air می خواهین ؟
 

aliamel

کاربر فعال
چرا دنبال بانک های SQLServer می گردی در حالی که خود AIR امکانات درج و حدف و ویرایش اطلاعاتتو در قالب یک DLL که ما می سازیم میده؟
 

e_naderlou

Member
میشه بیشتر توضیح بدین و اگه نمونه ای از کدش دارید بفرمایید تا روش کار کنم؟
بسیار ممنونم
 

aliamel

کاربر فعال
کدی که شما گذاشتی ترکیبی از کار با دستورات SQL و تراکنش ها در AIR به شمار میره.
کار با بانک های اطلاعاتی در AIR هم چیزی جز همین برنامه ای که گذاشتی نیست . فقط کمی تغییرات ممکنه داشته بشه

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

دستوراتی مثل Commit و RollBack هم جزو دستوراتی هستند که در مبحث Transaction ها مطرح میشه
شما روی همین کدها تحقیق کن مطمئنا خیلی چیزا یاد خواهی گرفت .
اگه بتونم بعد ها یه آموزش در این باب قرار خواهم داد.
 

kodex2

کاربر فعال
سلام،

SQLConnection و کلاس های امثال اون فقط برای Adobe Air کار می کنه. این کلاس ها مختص کار با دیتا بیس SQLite هست که توی ایر اضافه شده. برای اطلاعات بیشتر سرچ کنین. برای استفاده برای کار وب هم یه سری لایبرری و api برای mysql نوشته شده بود. توی گوگل کد فکر می کنم باشه.

موفق باشید.
 

e_naderlou

Member
دوستان عزیز توجه داشته باشید که yaa110 شریف توضیح کاملی راجع به این مبحث بهمراه آموزش در انجمن برنامه flash در مورخ 2 مرداد نود یعنی امروز قرار داده (از ایشون تشکر میکنم) ضمنا برای استفاده از این کدی که من تحت پکیج گذاشته بودم بخواهیم استفاده کنیم چطور باید توی air ایمپورت کنیم ؟ آیا دقیقا به روشی که در as3 داریم عملیه؟
آشنایی با sqlite در air – ساختن table


 

kodex2

کاربر فعال
زمانی که شما کد های مربوط به SQLite رو ران کنید خود به خود اگه فایل databaseName.sql پیدا نشه میاد اون رو براتون میسازه. البته مهم که بیلد پت رو کجا تعریف می کنید(معمولا اگه توی پت های پیش فرض باشه دسترسی نمی خواد.) یه سری برنامه های جانبی نوشته شده با خود Air هم هست که می تونید توی UI خود برنامه همه چی رو منیج کنید. مثلا دیتابیس بسازید و ...

این چیزیه که خود سایت SQLite پیشنهاد داده که البته بهتر از این خیلی هست.
http://sqlite.com/cvstrac/wiki?p=ManagementTools

برای اطلاعات جانبی پیرامون AS 3.0 و SQLite بهترین سورس خود help adobe و سمپل هاییه که توی خود سایتش هست.
نیاز به توضیح تکمیلی بود در خدمتم.
 

جدیدترین ارسال ها

بالا