इस प्रोजेक्ट के बारे में
# godot-sqlite
यह GDExtension रैपर SQLite3 को Godot 4.0+ में अतिरिक्त संकलन या बिल्ड स्क्रिप्ट संशोधनों के बिना उपलब्ध कराता है। यह Mac OS X (universal), Linux, Windows, Android (arm64), iOS (arm64), और HTML5 (स्थिरता ब्राउज़र पर निर्भर करती है) का समर्थन करता है।
## स्थापना
Godot Asset Library के माध्यम से स्थापित करें ('godot-sqlite' खोजें) या releases टैब से बिल्ड फ़ाइलें मैन्युअल रूप से डाउनलोड करें। Project Settings/Plugins में प्लगइन सक्रिय करें। एक डेमो प्रोजेक्ट उपलब्ध है।
## उपयोग
### चर
- **path** (String, डिफ़ॉल्ट="default"): डेटाबेस का पथ, `open_db()` से पहले सेट करें। `res://` और `user://` का समर्थन करता है।
- **error_message** (String): अंतिम क्वेरी से मानव-पठनीय त्रुटि संदेश।
- **default_extension** (String, डिफ़ॉल्ट="db"): यदि कोई नहीं दिया गया तो स्वतः जोड़ा गया एक्सटेंशन।
- **foreign_keys** (Boolean, डिफ़ॉल्ट=false): विदेशी कुंजी बाधाएँ सक्षम करें।
- **read_only** (Boolean, डिफ़ॉल्ट=false): डेटाबेस को केवल-पठनीय खोलें, जिससे PCK में पैकेजिंग संभव हो।
- **query_result** (Array): नवीनतम क्वेरी के परिणाम मान द्वारा (क्रमिक क्वेरी के लिए सुरक्षित)।
- **query_result_by_reference** (Array): संदर्भ द्वारा परिणाम, प्रत्येक क्वेरी पर साफ़ और पुनः भरा जाता है।
- **last_insert_rowid** (Integer): `sqlite3_last_insert_rowid()` को उजागर करता है।
- **verbosity_level** (Integer, डिफ़ॉल्ट=1): कंसोल लॉगिंग स्तर (0=शांत, 1=सामान्य, 2=विस्तृत, 3=बहुत विस्तृत)।
### विधियाँ
- **open_db()** / **close_db()**: डेटाबेस कनेक्शन खोलें/बंद करें।
- **query(query_string)**: एक कच्चा SQL कथन निष्पादित करें।
- **query_with_bindings(query_string, param_bindings)**: SQL इंजेक्शन रोकने के लिए नामहीन पैरामीटर बाइंडिंग के साथ निष्पादित करें।
- **query_with_named_bindings(query_string, param_bindings)**: नामित बाइंडिंग के साथ निष्पादित करें (`:`, `@`, `$`, `?` उपसर्गों का समर्थन करता है)।
- **create_table(table_name, table_dictionary)**: कॉलम परिभाषाओं के साथ एक तालिका बनाएं (data_type, not_null, unique, default, primary_key, auto_increment, foreign_key)।
- **drop_table(table_name)**: एक तालिका हटाएं।
- **insert_row(table_name, row_dictionary)** / **insert_rows(table_name, row_array)**: पंक्तियाँ सम्मिलित करें।
- **select_rows(table_name, query_conditions, selected_columns)**: पंक्तियाँ चुनें, मान द्वारा लौटाता है।
- **update_rows(table_name, query_conditions, updated_row_dictionary)**: पंक्तियाँ अद्यतन करें।
- **delete_rows(table_name, query_conditions)**: पंक्तियाँ हटाएं।
- **import_from_json(import_path)** / **export_to_json(export_path)**: डेटाबेस संरचना और सामग्री को JSON के रूप में आयात/निर्यात करें।
- **import_from_buffer(input_buffer)** / **export_to_buffer()**: JSON-स्वरूपित बफर के रूप में आयात/निर्यात करें (एन्क्रिप्शन के लिए उपयोगी)।
- **create_function(function_name, function_reference, number_of_arguments)**: एक स्केलर SQL फ़ंक्शन बाँधें।
- **get_autocommit()**: ऑटोकमिट मोड जाँचें।
- **compileoption_used(option_name)**: संकलन विकल्प जाँचें (जैसे, FTS5)।
- **backup_to(destination_path)** / **restore_from(source_path)**: डेटाबेस बैकअप/पुनर्स्थापित करें।
- **enable_load_extension(onoff)** / **load_extension(extension_path, extension_entry_point)**: SQLite एक्सटेंशन लोड करें।
- **sanitize_identifier(table_or_column_identifier)**: क्वेरी में सुरक्षित उपयोग के लिए तालिका/कॉलम नाम साफ़ करें।
### सिग्नल
- **row_deleted(table_name, rowid)**: जब एक पंक्ति हटाई जाती है तो उत्सर्जित होता है।
- **row_inserted(table_name, rowid)**: जब एक पंक्ति सम्मिलित की जाती है तो उत्सर्जित होता है।
- **row_updated(table_name, rowid)**: जब एक पंक्ति अद्यतन की जाती है तो उत्सर्जित होता है।
## FAQ मुख्य बिंदु
- **सिंटैक्स त्रुटियाँ**: क्वेरी ऑनलाइन परीक्षण करें, कच्ची क्वेरी फ़ंक्शन का उपयोग करें, और रिक्त स्थान या अल्पविराम वाले स्ट्रिंग के लिए उचित उद्धरण सुनिश्चित करें।
- **गतिशील तालिका/कॉलम नाम**: बाइंड नहीं किए जा सकते; सीधे क्वेरी स्ट्रिंग में डालें।
- **मोबाइल/HTML5 पहुँच**: केवल-पठनीय डेटाबेस PCK में पैकेज किए जाने चाहिए; पढ़ने-लिखने के लिए `user://` पर कॉपी करना आवश्यक है।
- **सर्वर संगतता**: Godot Server बाइनरी के साथ काम करता है; पुराने Linux को पुनः संकलन की आवश्यकता हो सकती है।
- **एक्सटेंशन**: FTS5, गणित फ़ंक्शन, और R*Tree समर्थित हैं लेकिन फ़्लैग के साथ पुनः संकलन की आवश्यकता होती है।
- **एन्क्रिप्शन**: मूल रूप से समर्थित नहीं; कस्टम एन्क्रिप्शन के लिए आयात/निर्यात बफर का उपयोग करें।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.