首先,我在科特林(Kotlin)no业业,试图在家学习,开始为我工作的公司制定程序。 制成的SQLite数据库包含4个表,其中之一是“ Empeloyees”,其中包含公司员工的数据,包括部门和专业。 第二张表记录了这些员工的假期。
这是我的主要活动代码:
class DBHelper(context: Context) :
SQLiteOpenHelper(context,DB_Name,null,1) {
override fun onCreate(db: SQLiteDatabase) {
db.execSQL("CREATE TABLE IF NOT EXISTS Empeloyees (EmpID INTEGER PRIMARY KEY,EmpName TEXT NOT NULL,EmpProfession TEXT NOT NULL,EmpDepartment TEXT NOT NULL,EmpPhone TEXT NOT NULL,EmpDayofbirth TEXT,EmpMonthofbirth TEXT,EmpYearofbirth TEXT,EmpDayofhire TEXT,EmpMonthofhire TEXT,EmpYearofhire TEXT)")
db.execSQL("CREATE TABLE IF NOT EXISTS Wardeya (WarID INTEGER PRIMARY KEY AUTOINCREMENT,WarName TEXT NOT NULL)")
db.execSQL("CREATE TABLE IF NOT EXISTS Permessions (PermID INTEGER PRIMARY KEY,Engineer TEXT NOT NULL,Wardeya TEXT NOT NULL,PermDay TEXT NOT NULL,PermMonth TEXT NOT NULL,PermYear TEXT NOT NULL)")
db.execSQL("CREATE TABLE IF NOT EXISTS Holidays (HolidayID INTEGER PRIMARY KEY,Department TEXT NOT NULL,Profession TEXT NOT NULL,DaysofHoliday TEXT NOT NULL,StartDay TEXT NOT NULL,StartMonth TEXT NOT NULL,StartYear TEXT NOT NULL,EndDay TEXT NOT NULL,Endmonth TEXT NOT NULL,EndYear TEXT NOT NULL,PresentedDay TEXT NOT NULL,Presentedmonth TEXT NOT NULL,PresentedYear TEXT NOT NULL,ApproveDay TEXT NOT NULL,ApproveMonth TEXT NOT NULL,ApproveYear TEXT NOT NULL)")
}
override fun onUpgrade(db: SQLiteDatabase,oldVersion: Int,newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS Empeloyees")
db.execSQL("DROP TABLE IF EXISTS Wardeya")
db.execSQL("DROP TABLE IF EXISTS Permessions")
db.execSQL("DROP TABLE IF EXISTS Holidays")
onCreate(db)
}
fun insertDataEmp(id: Int,name: String,prof: String,department: String,phone: String,dayofbirth: String,monthofbirth: String,yearofbirth: String,dayofhire: String,monthofhire: String,yearofhire: String) {
val db = this.writableDatabase
val contentvalues = Contentvalues()
contentvalues.put(COL_11,id)
contentvalues.put(COL_12,name)
contentvalues.put(COL_13,prof)
contentvalues.put(COL_14,department)
contentvalues.put(COL_15,phone)
contentvalues.put(COL_16,dayofbirth)
contentvalues.put(COL_17,monthofbirth)
contentvalues.put(COL_18,yearofbirth)
contentvalues.put(COL_19,dayofhire)
contentvalues.put(COL_110,monthofhire)
contentvalues.put(COL_111,yearofhire)
db.insert(TABLE_EMP,contentvalues)
}
val allDataEmp : Cursor
get() {
val db = this.writableDatabase
val res = db.rawQuery("SELECT * FROM " + TABLE_EMP,null)
return res
}
用于构建数据库和表的r。
我还有另一个活动,该活动使界面可以插入“假期”数据,例如谁要求休假,他工作的部门或专业。因此,我从2个窥探者开始了活动,一个是在Empolyees表中搜索Departments,第二个是根据部门搜索职业:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_holidays_page)
val s1 = spin1
s1.onItemSelectedListener = object : OnItemSelectedListener {
override fun onNothingSelected(parent1: AdapterView<*>?) {
}
override fun onItemSelected(parent1: AdapterView<*>?,view: View?,position: Int,id: Long) {
DepartmentTextView.text = "${parent1?.selectedItem.toString()}"
}
}
val DepartmentList = ArrayList<String>()
val ProfessionList = ArrayList<String>()
val db = dbHelper.readableDatabase
val st1 = "SELECT DISTINCT EmpProfession FROM Empeloyees where EmpDepartment=\'"+DepartmentTextView.text.toString()+"\'"
val c1 = db.rawQuery("SELECT DISTINCT EmpDepartment FROM Empeloyees",null)
val c2 = db.rawQuery(st1,null)
if (c1.moveToFirst()) {
do {
DepartmentList.add(c1.getString(c1.getcolumnIndex("EmpDepartment")))
}
while (c1.moveToNext())
val mySpinner1 = findViewById(R.id.spin1) as Spinner
var adapter= ArrayAdapter(this,android.R.layout.simple_list_item_1,DepartmentList)
mySpinner1.adapter = adapter
}
if (c2.moveToFirst()) {
do {
ProfessionList.add(c2.getString(c2.getcolumnIndex("EmpProfession")))
}
while (c2.moveToNext())
val mySpinner2 = findViewById(R.id.spin2) as Spinner
var adapter1 = ArrayAdapter(this,ProfessionList)
mySpinner2.adapter = adapter1
}
}
Employees表中的第一个部门并将其放入数组列表n将其绑定到snipper1适配器。 我的主要问题是第二次搜索的游标,我尝试了所有可能的解决方案(“ =运算符”,“ LIKE运算符”,“ MATCH运算符”),它们在表中均未搜索。但是,当我将游标sql字符串更改为“从Empeloyees选择SELECTTINTINCT EmpProfession”时,我得到了snipper2适配器。
所以知道哪里出了问题吗?