如果我了解Java,那么将Android应用程序连接到SQLite数据库需要知道什么?

时间:2012-05-06 02:16:29

标签: android database sqlite

我想学习如何为Android编程数据库以及我的SQLite知识。如果我知道Java还需要学习什么,以便我可以构建一个数据库?您可以帮助我的任何其他信息将不胜感激。

3 个答案:

答案 0 :(得分:2)

您需要了解SQL,关系数据库和规范化规则。

答案 1 :(得分:2)

首先,您需要在服务器上安装,命名和建立SQLite数据库的凭据(用户名,密码,主机)。以下是与执行此操作所需的Android类相关的链接:http://developer.android.com/reference/android/database/sqlite/package-summary.html

然后你需要了解JAVA如何与SQL对话。我只熟悉PHP-> SQL,但这里是JAVA-> SQL连接的链接,它看起来与PHP http://sqlzoo.net/java.htm非常相似。

SQL语言非常简单。

SELECT用于从数据库表中获取行。

INSERT是插入行

UPDATE用于更改行

中的值(a.k.a,字段)

DELETE是删除行

虽然很多人可能会为此嗤之以鼻,但是我开始使用SQL语法(并将PHP连接到SQL):W3CSchools

答案 2 :(得分:2)

基本上,你需要一个DatabaseHelper类,例如DataBaseHelper.class:

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;

import android.database.Cursor;
import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;

import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{

private String sql;
private SQLiteDatabase db;

//database name
private static final String NAME_DB = "Courses.sql";    

//database version
private static final int VERSION_DB = 1;

//database table name
public static final String COURSES_TABLE = "courses";

//database table columns for N_TABLE
public static final String ID_KEYROW= "_id";
public static final String ID_COURSE= "courseid";
public static final String ID_TITLE = "title";
public static final String ID_INSTRUCTOR = "instructor";
public static final String ID_LENGTH = "length";
public static final String ID_RATING = "rating";
public static final String ID_TOPIC = "topic";
public static final String ID_SUBJECT = "subject";
public static final String ID_DESCRIPTION = "description";  
//private final Context myContext;

public DBHelper(Context context) {
    super(context, NAME_DB, null, VERSION_DB);
    //this.myContext = context;
}
//Creating Table
@Override
public void onCreate(SQLiteDatabase db) 
{
    String CREATE_LOGIN_TABLE = "CREATE TABLE " + COURSES_TABLE + "("
            + ID_KEYROW + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + ID_COURSE + " TEXT NOT NULL, "
            + ID_TITLE + " TEXT NOT NULL, "
            + ID_INSTRUCTOR + " TEXT NOT NULL, "
            + ID_LENGTH + " TEXT NOT NULL, "
            + ID_RATING + " TEXT NOT NULL, "
            + ID_TOPIC + " TEXT NOT NULL, "
            + ID_SUBJECT + " TEXT NOT NULL, "
            + ID_DESCRIPTION + " TEXT NOT NULL" + ")";
    db.execSQL(CREATE_LOGIN_TABLE);
    /* Other Method for Create DataBase.
    db.execSQL(" CREATE TABLE courses" + "(" + ID_KEYROW + " INTEGER PRIMARY KEY AUTOINCREMENT, " + ID_COURSE + " TEXT NOT NULL, " + ID_TITLE + " TEXT NOT NULL, " + ID_INSTRUCTOR + " TEXT NOT NULL, " + ID_LENGTH + " TEXT NOT NULL, " + ID_RATING + " TEXT NOT NULL, " + ID_TOPIC + " TEXT NOT NULL, " + ID_SUBJECT + " TEXT NOT NULL, " + ID_DESCRIPTION + " TEXT NOT NULL);"
            );*/    
}       

//Updating Database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS " + COURSES_TABLE);
    onCreate(db);
}
//Insert Courses
//public void insertCourses(Integer courseid, String title, String instructor, Integer length, Integer rating, String topic, String subject, String description)
public void insertCourses()
{
    SQLiteDatabase db= this.getWritableDatabase();

    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('1', 'Interdisciplinary Care Planning', 'Keith Savell', '60', '4.7', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to...', 'Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort  to enhance the care and quality of resident life.', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('2', 'Culture Change: Creating A Climate Of Care...', 'Keith Savell', '60', '5', 'Culture Change ', 'Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('3', 'Medical Records Documentation', 'Keith Savell', '60', '5', 'Medical Records Documentation ', 'Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort  to enhance the care and quality of resident life.', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('4', 'Census Challenges', 'Keith Savell', '60', '4.45', 'Creative Solutions to Drive Census ', 'Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('5', 'Fall Prevention: Reducing Fall Related Injuries', 'Keith Savell', '60', '5', 'Guidelines for Health Care Providers ', 'Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort  to enhance the care and quality of resident life.', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('6', 'Meaningful Engagement', 'Keith Savell', '60', '5', 'Creating The Failure Free Activity Program ', 'Learn to evaluate and modify the environment to support our residents with cognitive impairment as they age in place.', 'Residents with dementia and delirium are constantly assessing the environment, looking for clues to help them understand where they are, who others around them are, what they are supposed to be doing and what is expected of them.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('7', 'Dementia and Delirium', 'Keith Savell', '60', '4.69', 'The Importance of Accurate Diagnosis and Treatment ', 'Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort  to enhance the care and quality of resident life.', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')";
    db.execSQL(sql);
    sql="INSERT INTO courses(courseid, title, instructor,  length, rating, topic, subject, description) VALUES ('8', 'Delirium', 'Keith Savell', '60', '4.69', 'The Importance of Accurate Diagnosis and Treatment ', 'Encourage the Interdisciplinary Treatment Team (IDT) to work as a team and view the Care Plan as a resident-centered collaborative effort  to enhance the care and quality of resident life.', 'Interdisciplinary Care Planning requires members of the Interdisciplinary Treatment Team (IDT) to view the Care Plan as a resident centered collaborative effort - rather than as a staff centered document. Learn how to utilize the Care Plan to truly function as a team - working together to enhance the care and quality of resident life.')";
    db.execSQL(sql);

    //Other Style for Insert record in DB.
    ContentValues values = new ContentValues(); //Here from ContentValues
    values.put("courseid", "9");
    values.put("title", "xxxxxxx Care Planning");
    values.put("instructor", "Keith Savell");
    values.put("length", "60");
    values.put("rating", "4.7");
    values.put("topic", "some topic");
    values.put("subject", "some subject");
    values.put("description", "some description");
    db.insert(COURSES_TABLE, null, values);
}

public ArrayList<Courses> getCourses()
{
    db = getWritableDatabase();
    sql = "SELECT courseid, title, instructor, length, rating, topic, subject, description FROM courses";
    Cursor cursor = db.rawQuery(sql, null);
    ArrayList<Courses> courses = new ArrayList<Courses>();


    while (cursor.moveToNext())
    {
        Courses oCourses=new Courses();

        oCourses.courseid=cursor.getInt(0);
        oCourses.title=cursor.getString(1); //Original Value 0
        oCourses.instructor=cursor.getString(2);
        oCourses.length=cursor.getString(3);
        oCourses.rating=cursor.getString(4);
        oCourses.topic=cursor.getString(5);
        oCourses.subject=cursor.getString(6);
        oCourses.description=cursor.getString(7);
        courses.add(oCourses);          
    }       
    db.close();
    cursor.close();
    return courses;     
}

public ArrayList<Courses> getItem(int position)
{
    db = getWritableDatabase();
    sql = "SELECT courseid, title, instructor, length, rating, topic, subject, description FROM courses";
    Cursor cursor = db.rawQuery(sql, null);
    ArrayList<Courses> courses = new ArrayList<Courses>();


    while (cursor.moveToNext())
    {
        Courses oCourses=new Courses();

        oCourses.courseid=cursor.getInt(0);
        oCourses.title=cursor.getString(1); //Original Value 0
        oCourses.instructor=cursor.getString(2);
        oCourses.length=cursor.getString(3);
        oCourses.rating=cursor.getString(4);
        oCourses.topic=cursor.getString(5);
        oCourses.subject=cursor.getString(6);
        oCourses.description=cursor.getString(7);
        courses.add(oCourses);          
    }
    db.close();
    cursor.close();
    return courses;

}

public int getRowCount() {
    String countQuery = "SELECT * FROM " + COURSES_TABLE;
    SQLiteDatabase db =this.getReadableDatabase();
    Cursor cursor = db.rawQuery(countQuery, null);
    int rowCount = cursor.getCount();
    db.close();
    cursor.close();
    //return row count.
    return rowCount;
}//GetRowCount

//Recreate database, delete all tables and create them again.
 public void resetTables(){
        SQLiteDatabase db = this.getWritableDatabase();
        // Delete All Rows
        db.delete(COURSES_TABLE, null, null);
        db.close();
    }}

稍后在您的Mainclass(或您想要管理数据的活动)中调用DatabaseHelper.class的方法,希望这能为您提供想法......