Я использую следующее нажатие кнопки для создания нового проекта, где столбец «Имя» в таблице «Проект» должен быть уникальным:
Код: Выделить всё
projectButton.setOnClickListener {
if(!projectName.text.isEmpty()){
val fabricToProject = buildChecked(checkedList).toTypedArray()
val result: Long = fabricDB.projectCreate(fabricToProject,projectName.text.toString())
val projectID = fabricDB.getProjectID(projectName.text.toString())
for(x in fabricToProject){
fabricDB.fabricUpdate(x,projectID)
}
if(result.toInt() == -1){
Toast.makeText(applicationContext,"Project create failed, is your project name unique?",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(applicationContext,"Project created!",Toast.LENGTH_SHORT).show()
}
}
else{
Toast.makeText(applicationContext,"Please enter a project name.",Toast.LENGTH_LONG).show()
}
}
Код: Выделить всё
projectCreate()Код: Выделить всё
fun projectCreate(fabricIDs: Array, name: String): Long {
val dbW: SQLiteDatabase=this.writableDatabase
val dbR: SQLiteDatabase=this.readableDatabase
var idString = ""
val contentValuesProject = ContentValues()
contentValuesProject.put(Pcol4,name)
for(x in fabricIDs){
idString += "$x,"
}
idString = idString.dropLast(1)
contentValuesProject.put(Pcol2,idString)
val result: Long = dbW.insert(PtableName,null,contentValuesProject)
return result
}
Код: Выделить всё
fun getProjectID(name:String): Int{
val dbR: SQLiteDatabase=this.readableDatabase
val projectID = DatabaseUtils.stringForQuery(dbR,"SELECT ID FROM Project WHERE Name is $name",null)
return projectID.toInt()
}
(1) нет такого столбца: Project1 в «ВЫБЕРИТЕ ID ИЗ проекта, ГДЕ Имя — Project1»
Если я затем открою действие списка проектов (которое загружается из той же таблицы), я увижу Project1. Разница в том, что в моей активности списка проектов используется курсор, поскольку мне нужно пройти по таблице, тогда как getProjectID() использует readableDatabase(), поскольку я извлекаю только одно значение.
Подробнее здесь: https://stackoverflow.com/questions/798 ... serted-row
Мобильная версия