Ceci est un mémo, alors n'ayez pas peur.
Il y a quatre colonnes (axe horizontal): ID (généré automatiquement) `` `,` `` catégorie
, `chapitre```,`
`mot de passe. Le nom du fichier est `` `` ProjectList.db
et le nom de la table est
PROJECT_INFO```
SampleDatabaseHelper
public class SampleDatabaseHelper extends SQLiteOpenHelper {
// Reference
private static final String TAG = "SampleDatabaseHelper";
//Nom de la table
private static final String TABLE_PROJECT = "PROJECT_INFO";
//colonne
public static final String ID = "_id";
public static final String CATEGORY = "category";
public static final String CHAPTER = "chapter";
public static final String PASSWORD = "password";
//Toutes les colonnes
private final String[] PROJECT_COLUMNS = { CATEGORY, CHAPTER, PASSWORD };
//Texte de production SQlite
private static final String SQL_CREATE_TABLE_PROJECT = "CREATE TABLE "
+ "`" + TABLE_PROJECT + "` ("
+ "`" + ID + "` INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "`" + CATEGORY + "` TEXT NOT NULL,"
+ "`" + CHAPTER + "` TEXT NOT NULL,"
+ "`" + PASSWORD + "`,"
+ "UNIQUE("
+ "`" + CATEGORY + "`,"
+ "`" + CHAPTER + "`,"
+ "`" + PASSWORD + "`"
+ ")"
+ ");";
//Définition du nom de fichier et du numéro de version
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_FILE_NAME = "ProjectList.db";
//constructeur
public SampleDatabaseHelper (Context context) {
super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate (SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(SQL_CREATE_TABLE_PROJECT);
}
@Override
public void onUpgrade (SQLiteDatabase sqLiteDatabase, int i, int i1) { }
}
CREATE TABLE `PROJECT_INFO`(
`_id` INTEGER PRIMARY KEY AUTOINCREMENT,
`category` TEXT NOT NULL,
`chapter` TEXT NOT NULL,
`password`,
UNIQUE(`category`, `chapter`, `password`));
Nom de la table après CREATE TABLE ''. Dans
() , séparez '',
dans l'ordre de règle de type de colonne ''
. Les règles incluent «PRIMARY KEY» qui spécifie la clé primaire, «AUTO INCREMENT» qui incrémente la valeur de 1 lorsqu'une ligne est ajoutée et «NOT NULL» qui ne doit pas être absolument vide. y a-t-il. De plus, la valeur de la colonne incluse dans «UNIQUE» ne peut pas être la même combinaison que les autres lignes.
SampleDatabaseHelper
public boolean addProject(final String category, final String chapter, final String password) {
try{
SQLiteDatabase db = getReadableDatabase();
final ContentValues values = new ContentValues(3);
values.put(CATEGORY,category);
values.put(CHAPTER,chapter);
values.put(PASSWORD,password);
long rowID = db.insert(TABLE_PROJECT,null,values);
if (rowID >= 0) {
//Inscription réussie.
return true;
} else {
//Échec de l'enregistrement. Dans de nombreux cas, la cause est que la condition UNIQUE est interceptée.
return false;
}
} catch (Exception e) {
return false;
}
}
SampleDatabaseHelper
public int deleteProject(String id){
String selection = ID + " = ?";
String[] selectionArgs = { id };
try {
SQLiteDatabase db = getWritableDatabase();
int deletedId = db.delete(TABLE_PROJECT, selection, selectionArgs);
return deletedId;
} catch (Exception e) {}
}
selection
est une instruction conditionnelle, qui explique comment écrire sqlite. Dans ce cas, il n'y a qu'un seul ? '', Mais même s'il y a plusieurs
? '', Le contenu de selectionArgs
est appliqué à ``? '' Un par un.
SampleDatabaseHelper
public List<String[]> getProjectColumns(String category){
String selection = CATEGORY + " = ?";
String[] selectionArgs = { category };
Cursor c = null;
try {
SQLiteDatabase db = getReadableDatabase();
c = db.query(TABLE_PROJECT, PROJECT_COLUMNS, selection, selectionArgs, null, null, null);
List<String[]> list = new ArrayList<>();
while (c.moveToNext()) {
String[] ret = { c.getString(0), c.getString(1), c.getString(2) };
list.add(ret);
}
return list;
}catch (Exception e) {
} finally {
if (c != null) {
try { c.close(); } catch (Exception ex) {}
}
}
return null;
}
Notez le concept de curseurs. Ceux qui frappent la recherche alors qu'il y a beaucoup de colonnes sont marqués et extraits. Dans cet état, tout est marqué, mais en faisant `` c.moveToNext () '', le curseur se déplace uniquement vers le haut des ** extraits **. (Si vous le faites une fois de plus, ** parmi les extraits ** ira ensuite) Vous pouvez l'utiliser pour vous assurer que la valeur est à l'intérieur.
SampleDatabaseHelper
public String[] getProjectColumns(String id) {
String selection = ID + " = ?";
String[] selectionArgs = { id };
Cursor c = null;
try {
SQLiteDatabase db = getReadableDatabase();
c = db.query(TABLE_PROJECT,PROJECT_COLUMNS, selection, selectionArgs, null, null, null);
if (c.moveToNext()) {
String[] ret = {c.getString(0),c.getString(1),c.getString(2)};
return ret;
}
} catch (Exception e) {
} finally {
if (c != null) {
try { c.close(); } catch (Exception ex) {}
}
}
return null;
}
public boolean updateColumns(String id, String newCategory, String newChapter, String newPassword){
String selection = ID + " = ?";
String[] selectionArgs = { id };
try {
SQLiteDatabase db = getReadableDatabase();
final ContentValues updateValues = new ContentValues(3);
updateValues.put(CATEGORY,newCategory);
updateValues.put(CHAPTER,newChapter);
updateValues.put(PASSWORD,newPassword);
db.update(DATABASE_PROJECT_NAME, updateValues, selection, selectionArgs);
return true;
}catch (Exception e) {
return false;
}
return false;
}
C'est juste un mémo, donc si vous me dites l'orthographe, je vais la corriger. J'ai écrit les spécifications de la méthode en tant que norme d'entreprise. Bien que ce soit japonais. Twitter: https://twitter.com/Cyber_Hacnosuke (Veuillez me suivre.) Github: https://github.com/CyberHacnoshuke
Recommended Posts