SQLStatement.execute () - এক বিবৃতিতে বহুবিধ প্রশ্ন

আমি SQL - এ একটি ডাটাবেস প্রজন্মের লিপি লিখেছি এবং এটি আমার Adobe AIR অ্যাপ্লিকেশন:

Create Table tRole (
    roleID integer Primary Key
    ,roleName varchar(40)
);
Create Table tFile (
    fileID integer Primary Key
    ,fileName varchar(50)
    ,fileDescription varchar(500)
    ,thumbnailID integer
    ,fileFormatID integer
    ,categoryID integer
    ,isFavorite boolean
    ,dateAdded date
    ,globalAccessCount integer
    ,lastAccessTime date
    ,downloadComplete boolean
    ,isNew boolean
    ,isSpotlight boolean
    ,duration varchar(30)
);
Create Table tCategory (
    categoryID integer Primary Key
    ,categoryName varchar(50)
    ,parent_categoryID integer
);
...

আমি নিম্নলিখিত পদ্ধতি ব্যবহার করে এডোবি এআইআই এ এটি চালানো:

public static function RunSqlFromFile(fileName:String):void {
    var file:File = File.applicationDirectory.resolvePath(fileName);
    var stream:FileStream = new FileStream();
    stream.open(file, FileMode.READ)
    var strSql:String = stream.readUTFBytes(stream.bytesAvailable);
    NonQuery(strSql);
}

public static function NonQuery(strSQL:String):void {
    var sqlConnection:SQLConnection = new SQLConnection();
    sqlConnection.open(File.applicationStorageDirectory.resolvePath(DBPATH));
    var sqlStatement:SQLStatement = new SQLStatement();
    sqlStatement.text = strSQL;
    sqlStatement.sqlConnection = sqlConnection;
    try {
        sqlStatement.execute();
    } catch (error:SQLError) {
        Alert.show(error.toString());
    }
}

কোন ত্রুটি উত্পন্ন হয় নি, তবে শুধুমাত্র troole বিদ্যমান। মনে হচ্ছে যে এটি শুধুমাত্র প্রথম ক্যোয়ারী দেখায় (সেমিকোলন পর্যন্ত - যদি আমি এটি সরাই তবে ক্যোয়ারী ব্যর্থ হয়)। এক বিবৃতিতে একাধিক প্রশ্নের কল করার উপায় আছে?

0
যোগ সম্পাদিত
মতামত: 5

3 উত্তর

আমি এই ব্যবহার করে জখম এটি একটি হ্যাক একটি ধরনের, কিন্তু এটি আসলে বেশ ভাল কাজ করে। কেবলমাত্র আপনি আপনার অর্ধপরিবাহনের সাথে খুব সতর্কতা অবলম্বন করতে হবে। : ডি

var strSql:String = stream.readUTFBytes(stream.bytesAvailable);      
var i:Number = 0;
var strSqlSplit:Array = strSql.split(";");
for (i = 0; i < strSqlSplit.length; i++){
    NonQuery(strSqlSplit[i].toString());
}
0
যোগ
শুধু ভার্চুয়াল ক্ষেত্রের একটি সেমিকোলন আবির্ভূত হলে এটি কতটা খারাপ তা বুঝতে পেরেছে।
যোগ লেখক Shawn, উৎস

সলিউট API- এর একটি ফাংশন আছে যা কিছু sqlite_prepare যা এক বিবৃতি এবং এটি মৃত্যুদন্ডের জন্য প্রস্তুত করে, মূলত এসকিউএলকে প্যাডিং করে এবং মেমরিতে সংরক্ষণ করে। এর মানে হল যে এসকিউএল শুধুমাত্র একবার ডাটাবেস ইঞ্জিনে প্রেরণ করতে হবে যদিও বিবৃতিটি অনেক বার কার্যকর করা হয়।

যাইহোক, একটি বিবৃতিটি একটি একক SQL ক্যোয়ারী, এটি শুধু নিয়ম। এয়ার এসকিউএল এপিআই SQLite, শুধুমাত্র একক বিবৃতিতে কাঁচা এসকিউএল পাঠানোর অনুমতি দেয় না এবং এর কারণ সম্ভবত, AIR এসকিউএল এর সাথে কথা বলে যখন sqlite_prepare ফাংশন ব্যবহার করে।

0
যোগ

আপনার ডিমেইমিটারকে কিছুটা জটিল করে তুলতে কি ", \ n" যা প্রায়শই দেখা যায় না। ফাইলটি তৈরি করার সময় আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার কাছে একটি লাইন রিটার্ন আছে বা দুটি আছে। আমি শেষ করে ফেলি দুই "\ n \ n" আমার ফাইল তৈরিতে যা ভাল কাজ করে।

0
যোগ