我在我的项目中使用 godot SQLite 有很多无效的。这是我的代码
我正在使用 godot 3.6 `扩展节点
#onready var db = preload("res://addons/sqlite/godot-sqlite.gd").new() const db = 预加载("res://addons/godot-sqlite/bin/gdsqlite.gdns")
const DB_PATH =“res://random_words.db”
var Words = [] # 从数据库加载的单词列表 var Special_characters = [".", "!", "?"]
func_ready(): 从数据库加载单词()
func load_words_from_database(): # 打开数据库 如果不是 db.connect(DB_PATH): print("无法打开数据库:", DB_PATH) 返回
# Execute the query
var query = "SELECT word FROM words;"
if not db.query(query):
print("Failed to execute query: ", query)
db.close()
return
# Fetch rows and populate the words array
words.clear()
while db.next_row():
words.append(db.get_column_text(0)) # First column is 'word'
print("Loaded words: ", words.size())
db.close()
func get_prompt() -> 字符串: 如果words.empty(): 返回“数据库中没有可用的单词!”
var word_index = randi() % words.size()
var special_index = randi() % special_characters.size()
var word = words[word_index]
var special_character = special_characters[special_index]
var formatted_word = word.substr(0, 1).to_upper() + word.substr(1).to_lower()
return formatted_word + special_character
我有你们可以为以后的学习提供帮助。谢谢你
问题位于:
if not db.connect(DB_PATH): print("Failed to open the database at: ", DB_PATH)
我不认为
db.connect
会像你想象的那样。 db.connect
尝试为 db 节点发出的信号注册处理程序。 然而,db
并不是一个发出信号的节点,它是对SQLite实例的引用。 该 SQLite 实例不会发出任何信号,它只是提供与数据库交互的函数。
要打开 db 文件,您需要调用
db.open_db()
,但是,您目前拥有的代码可能不适合目的。
我强烈建议您首先在演示应用程序中复制 godot-sqlite 提供的最小示例:https://github.com/2shady4u/godot-sqlite/releases/download/v3.0/demo.zip