需要什么 SQLite 列数据类型来处理这个问题?

What SQLite column data type is required to handle this?

 def material_code(self):

    tableType = self.comboBox.currentText()
    tableGrade = self.comboBox_2.currentText()
    tableType = tableType.lower()

    c.execute('SELECT prefix FROM ' + tableType + ' WHERE grade = ' + tableGrade)

    prefix_code = c.fetchone()
    print(prefix_code[0])

    conn.commit()

我似乎遇到了一个常见错误...

sqlite3 无法识别的标记:

当 return 是 numeric/char 的组合并且字段中存在其他特殊字符时,会出现此错误。

有时,如果字段仅包含数字或字符而不是组合,它会起作用。

我正在选择的下拉列表 (tableGrade) 应该每次都能找到完全匹配的内容,因为下拉列表是从相同的 table/column.

填充的

另外,我可以对我的查询做些什么来防止注入攻击?

因为该列包含数字 and/or 个字符,那么您必须考虑它的数据类型是 TEXT,尽管 SQLite 在涉及到时并不严格数据类型,因为您可以将列的数据类型定义为 INT 并在其中存储任何类型的文本。
您必须改变的是 select 数据的方式。
您必须像这样使用占位符 ?(参数标记):

c.execute("SELECT prefix FROM " + tableType + " WHERE grade = ?", (tableGrade,))

其中 tableType 是保存 table 名称的变量,tableGrade 是保存要过滤的成绩的字符串值。