- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的第一个 Android/sql 项目,我正在创建一个带有两个数据库的考勤应用程序。 DatabaseHelper 有一张包含学生/教授列表的表格。另一个名为 coursesDatabase 的数据库有一个表,用于存储类(class)名称及其信息。我遇到的问题是我想为每个记录该特定类(class)出勤率的类(class)制作表格,从 COL1=STUDENT_NAME 开始,然后添加每个 COL2=LAST_NAME、COL3=DATE1、COL4=DATE2 等。 . 每次教授创建出勤部分时都会创建每个日期列。这是我的代码,不包括不相关的已完成方法:
public class CoursesDatabase extends SQLiteOpenHelper {
private static CoursesDatabase cd = null;
public static final int DATABASE_VERSION = 2;
public static final String DATABASE_NAME = "course_manager.db";
public static final String COURSES_TABLE_NAME = "COURSES";
public static final String KEY_ID = "ID"; //column index 0
public static final String KEY_NAME= "COURSE_NAME"; //column index 1
public static final String KEY_CODE = "COURSE_CODE"; //column index 2
public static final String KEY_HOUR = "COURSE_HOUR"; //column index 3
public static final String KEY_MINUTE = "COURSE_MINUTE"; //column index 4
public static final String KEY_INSTRUCTOR = "COURSE_INSTRUCTOR"; //column index 5
public static final String IS_ON = "IS_ON"; //column index 6
private CoursesDatabase(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
deleteAll();
addCourse(new Course("354", "Software Engineering", "12345", 10, 30, "doctor doc"));
addCourse(new Course("237", "CompSci 2", "13346", 11, 0, "john doe"));
}
public static CoursesDatabase getInstance(Context context){
if (cd == null){
cd = new CoursesDatabase(context);
}
return cd;
}
@Override
public void onCreate(SQLiteDatabase cd) {
final String SQL_CREATE_USER_TABLE = "CREATE TABLE " + COURSES_TABLE_NAME + "(" +
KEY_ID + " TEXT NOT NULL, " + // column 0
KEY_NAME + " TEXT NOT NULL, " + // column 1
KEY_CODE + " TEXT NOT NULL, " + // column 2
KEY_HOUR + " INT, " + // column 3
KEY_MINUTE + " INT, " + // column 4
KEY_INSTRUCTOR + " TEXT," + // column 5
IS_ON + "INT DEFAULT 0);"; // column 6
cd.execSQL(SQL_CREATE_USER_TABLE);
}
//Creates a table to log attendance for each class
String KEY_STUDENT_FIRST_NAME = "First_Name";
String KEY_STUDENT_LAST_NAME = "Last_Name";
public void newClassTable(SQLiteDatabase cd, Course course){
String CLASS_TABLE_NAME = course.getId() + "-" + course.getName() + "-" + course.getHour() + ":" + course.getMinute();
final String SQL_CREATE_CLASS_TABLE = "CREATE TABLE " + CLASS_TABLE_NAME + "(" +
KEY_STUDENT_FIRST_NAME + " STRING NOT NULL, " + // column 0
KEY_STUDENT_LAST_NAME + " STRING NOT NULL);"; // column 1
cd.execSQL(SQL_CREATE_CLASS_TABLE);
}
//takes the attendance of a student in course table. If the student does not exist in the course table, the student is then added.
public boolean attendStudentInCourse(Student student, Course course) {
SQLiteDatabase cd = this.getWritableDatabase();
//if professor has not turned on the course yet exit
if (!course.isAvailable()) {
return false;
}
return true;
}
所以我的问题是,当教授点击该类(class)的“新类(class)”时,我应该使用什么方法在类(class)表的末尾创建一个新列?当学生尝试 attendStudentInCourse()
方法时,我如何能够更新特定的最后一行?
最佳答案
So my question is what methods do I use in order to create a new column at the end of the class table when the professor clicks on "new session" for that class?
您可以使用
向表中添加一列(在某些条件下)ALTER TABLE <your_table_name> ADD COLUMN <you_column_definition(e)>
SQL As Understood By SQLite - ALTER TABLE 阅读此内容了解条件/限制。
And how would I be able to update that specific last row when a student attempts the attendStudentInCourse() method?
假设您指的是列而不是行
注意到您可以使用 DEFAULT <default_value>
设置将应用于所有现有行的默认值。
如果设置默认值(我猜测新 session 最初在类(class)中有 0 个学生)不适合,那么您可以使用 UPDATE 查询。
如果你的意思是行那么:-
但是,添加列不会添加行,添加的列将应用于所有行。
总而言之,设计可能会改进为:-
作为一个例子,也许考虑以下使用:-
-- 请注意具有多个表的单个数据库,这些表具有关系映射也称为引用
-- 请注意具有多个表的单个数据库,这些表具有关系映射也称为引用
DROP TABLE IF EXISTS role;
DROP TABLE IF EXISTS person;
DROP TABLE IF EXISTS course;
DROP TABLE IF EXISTS attendance;
DROP VIEW IF EXISTS proposed_attendance_list;
DROP VIEW IF EXISTS non_attendance_list;
-- Create the role table
CREATE TABLE IF NOT EXISTS role (_id INTEGER PRIMARY KEY, role);
-- Add some roles
-- NOTE _id column is not specified so SQLite will assign a unqiue value
-- assigned value will likely be 1, then likely 2, then likely 3........9,223,372,036,854,775,807 (highest)
-- NOTE no need for AUTOINCREMENT keyword and the resultant performance loss
-- NOTE _id is the column name that best suits Android (e.g. Cursor Adapters need this column name)
INSERT INTO ROLE (role) VALUES
('Instructor'), -- id 1
('Student'), -- id 2
('Instructor Aid '), -- id 3
('Administrator') -- id 4
-- !!!NOTE!!! you would not typically assume specific id
;
-- Create the Person table (Person will have a role - for simplicity of demo single role assumed)
CREATE TABLE IF NOT EXISTS person (_id INTEGER PRIMARY KEY, name TEXT, role INTEGER);
INSERT INTO person (name,role) VALUES
('Professor Plum',1), -- Instructor id = 1
('Tom Brown',2), -- Student id = 2
('Mary Smith',2), -- Student id = 3
('Sue Barnes',2), -- Student id = 4
('Ty Pit',4), -- Admin id = 5
('Dr. J M Hardy',1), -- Instructor id = 6
('Matilda Dance',2), -- Student id = 7
('Fred Bloggs',3) -- Aid id = 8
;
CREATE TABLE IF NOT EXISTS course (
_id INTEGER PRIMARY KEY,
course_name TEXT NOT NULL,
course_code TEXT NOT NULL,
course_hour TEXT NOT NULL,
course_minute TEXT,
course_time,
course_instructor INTEGER
);
INSERT INTO course (course_name, course_code, course_hour, course_minute, course_instructor) VALUES
('MATHS BASIC','M001','10','30',6), -- Maths with instructor Dr. J M Hardy id = 1
('MATHS APPLIED', 'M101','12','30',6), -- Applied Maths instructor Dr. J M Hardy id =2
('MATHS ADVANCED','M011','11','00',1) -- Advanced Maths instructor Professor Plum id =3
;
CREATE TABLE IF NOT EXISTS attendance (course_reference INTEGER, person_reference INTEGER, attended INTEGER, PRIMARY KEY (course_reference, person_reference));
INSERT INTO attendance VALUES
(1,6,0), -- Dr J M Hardy should attend (attended 0 = should attend, -1 if did not attend, 1 if did attend) course MATCHS BASIC
(1,3,0), -- Mary Should attent Basic maths
(1,7,0), -- Matilda should attend basic maths
(1,8,0), -- Aid Fred should attend basic maths
(3,1,1), -- Advanced maths Plum attended (taught it)
(3,2,-1), -- Advanced maths Tom Brown missed
(3,3,1), -- Advanced maths mary attended
(3,8,1), -- Aid Fred attended
(2,4,1), -- Applied Maths Sue attended
-- (2,4,0) WOULD BE DUPLICATE SO NOT ALLOWED (INSERT OR IGNORE would skip, Note android SQliteDatabase insert method uses INSERT OR IGNORE)
(2,3,0), -- Mary didn't attend as such but not flagged as did not attend (could just use 0 to indicate did not attend)
(2,7,1), -- Applied Maths Matilda attended
(2,6,0), -- Dr Hardy should attend
(2,1,0), -- Prof Plum should attend
(2,8,0) -- Fred Bloggs Admin should attend
;
-- Course attendace example listing the course details, the number of attendees and the list of attendees
-- Create as a view so that it can be resued (only need to type it out once)
CREATE VIEW IF NOT EXISTS proposed_attendance_list AS
SELECT
course.course_name,
course.course_code,
course.course_hour||':'||course.course_minute AS CourseTime,
count(attended) AS proposed_attendance,
group_concat(Person.name,' ,') AS peeople
FROM Course
JOIN attendance ON course._id = attendance.course_reference
JOIN person ON attendance.person_reference = person._id
JOIN role ON person.role = role._id
-- GROUP BY course_hour, course_minute
-- HAVING
GROUP BY course_code
ORDER BY course.course_code,role._id
;
-- Initial proposed course attendance
SELECT * FROM proposed_attendance_list;
-- Change some course codes
UPDATE course SET course_code = 'M201' WHERE course_code = 'M101';
UPDATE course SET course_code = 'M111' WHERE course_code = 'M011';
-- Modifed proposed course attendance
SELECT * FROM proposed_attendance_list;
先换个角度写一封关于旷课的信作为demo
CREATE VIEW IF NOT EXISTS non_attendance_list AS
SELECT course_name,
course_code,
Person.name,
Person.role,
'Dear '||person.name||' our records show that you did''t attend Course '||course_code||' '||course_name||' rest of letter' AS letter_to_send
FROM attendance
JOIN course ON course_reference = course._id
JOIN Person ON person_reference = Person._id
JOIN Role ON Person.role = role._id
WHERE attendance.attended < 1
ORDER BY course_code
;
-- Initial letters
SELECT letter_to_send FROM non_attendance_list;
-- Set Mary as having attended M001 Basic maths
UPDATE attendance SET attended = 1
WHERE course_reference = (SELECT _id FROM course WHERE course_code =
'M001' -- value that would be changed to suit
)
AND person_reference = (SELECT _id FROM person WHERE name =
'Mary Smith' -- value that would be changed to suit
)
;
-- Letters after update
SELECT letter_to_send FROM non_attendance_list;
关于java - 如何在使用 SQLite 操作期间添加行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53575759/
我正在努力做到这一点 在我的操作中从数据库获取对象列表(确定) 在 JSP 上打印(确定) 此列表作为 JSP 中的可编辑表出现。我想修改然后将其提交回同一操作以将其保存在我的数据库中(失败。当我使用
我有以下形式的 Linq to Entities 查询: var x = from a in SomeData where ... some conditions ... select
我有以下查询。 var query = Repository.Query() .Where(p => !p.IsDeleted && p.Article.ArticleSections.Cou
我正在编写一个应用程序包,其中包含一个主类,其中主方法与GUI类分开,GUI类包含一个带有jtabbedpane的jframe,它有两个选项卡,第一个选项卡包含一个jtable,称为jtable1,第
以下代码产生错误 The nested query is not supported. Operation1='Case' Operation2='Collect' 问题是我做错了什么?我该如何解决?
我已经为 HA redis 集群(2 个副本、1 个主节点、3 个哨兵)设置了本地 docker 环境。只有哨兵暴露端口(10021、10022、10023)。 我使用的是 stackexchange
我正在 Desk.com 中构建一个“集成 URL”,它使用 Shopify Liquid 模板过滤器语法。对于开始日期为 7 天前而结束日期为现在的查询,此 URL 需要包含“开始日期”和“结束日期
你一定想过。然而情况却不理想,python中只能使用类似于 i++/i--等操作。 python中的自增操作 下面代码几乎是所有程序员在python中进行自增(减)操作的常用
我需要在每个使用 github 操作的手动构建中显示分支。例如:https://gyazo.com/2131bf83b0df1e2157480e5be842d4fb 我应该显示分支而不是一个。 最佳答
我有一个关于 Perl qr 运算符的问题: #!/usr/bin/perl -w &mysplit("a:b:c", /:/); sub mysplit { my($str, $patt
我已经使用 ArgoUML 创建了一个 ERD(实体关系图),我希望在一个类中创建两个操作,它们都具有 void 返回类型。但是,我只能创建一个返回 void 类型的操作。 例如: 我能够将 book
Github 操作仍处于测试阶段并且很新,但我希望有人可以提供帮助。我认为可以在主分支和拉取请求上运行 github 操作,如下所示: on: pull_request push: b
我正在尝试创建一个 Twilio 工作流来调用电话并记录用户所说的内容。为此,我正在使用 Record,但我不确定要在 action 参数中放置什么。 尽管我知道 Twilio 会发送有关调用该 UR
我不确定这是否可行,但值得一试。我正在使用模板缓冲区来减少使用此算法的延迟渲染器中光体积的过度绘制(当相机位于体积之外时): 使用廉价的着色器,将深度测试设置为 LEQUAL 绘制背面,将它们标记在模
有没有聪明的方法来复制 和 重命名 文件通过 GitHub 操作? 我想将一些自述文件复制到 /docs文件夹(:= 同一个 repo,不是远程的!),它们将根据它们的 frontmatter 重命名
我有一个 .csv 文件,其中第一列包含用户名。它们采用 FirstName LastName 的形式。我想获取 FirstName 并将 LastName 的第一个字符添加到它上面,然后删除空格。然
Sitecore 根据 Sitecore 树中定义的项目名称生成 URL, http://samplewebsite/Pages/Sample Page 但我们的客户有兴趣降低所有 URL(页面/示例
我正在尝试进行一些计算,但是一旦我输入金额,它就会完成。我只是希望通过单击按钮而不是自动发生这种情况。 到目前为止我做了什么: Angular JS - programming-fr
我的公司创建了一种在环境之间移动文件的复杂方法,现在我们希望将某些构建的 JS 文件(已转换和缩小)从一个 github 存储库移动到另一个。使用 github 操作可以实现这一点吗? 最佳答案 最简
在我的代码中,我创建了一个 JSONArray 对象。并向 JSONArray 对象添加了两个 JSONObject。我使用的是 json-simple-1.1.jar。我的代码是 package j
我是一名优秀的程序员,十分优秀!