package com.example.qqqq; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; import java.util.ArrayList; import java.util.List; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "my_database.db"; public static final int DATABASE_VERSION = 1; public static final String TABLE_NAME = "my_table"; public static final String COLUMN_ID = "id"; public static final String COLUMN_NAME = "name"; public DBHelper(Context context) { super(context, DATABASE_NAME , null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT" + ")"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } public void insertData(String name) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); db.insert(TABLE_NAME, null, values); db.close(); } @SuppressLint("Range") public List<String> getAllData() { List<String> data = new ArrayList<String>(); SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); if (cursor.moveToFirst()) { do { data.add(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); } while (cursor.moveToNext()); } cursor.close(); db.close(); return data; } }
时间: 2024-04-27 15:22:38 浏览: 145
这是一个使用 SQLite 数据库的 Android 应用程序的 DBHelper 类。它定义了数据库名称,版本和表的名称以及各个列的名称。它还定义了数据库的创建和更新方法以及插入和获取数据的方法。在 onCreate 方法中,会创建一个名为 TABLE_NAME 的表,该表包含两个列:一个是自增的 ID,另一个是名称。在 insertData 方法中,将一个新行插入到表中,该行包含一个名称值。在 getAllData 方法中,会从表中检索所有行,并将其添加到一个字符串列表中,然后返回该列表。
相关问题
package com.example.login; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.app.AlertDialog; import android.content.DialogInterface; import android.widget.Spinner; import android.widget.Toast;
这是一个 Android 应用程序中的 Java 代码片段,用于实现一个登录功能。它包含了一些 Android 库的导入,如 `AppCompatActivity`,`ListView` 等等。这段代码还实现了与数据库的交互,通过 `SQLiteDatabase`、`Cursor`、`ContentValues` 等类进行数据的增删改查操作。此外,还包含了一些 UI 组件的定义,如 `EditText`、`Button`、`Spinner` 等等。最后,还有一些弹出框的实现,如 `AlertDialog`、`Toast` 等等。
package com.oplus.utrace.sdk import android.annotation.SuppressLint import android.content.Context @SuppressLint("StaticFieldLeak") object UTraceApp { internal lateinit var mContext: Context private lateinit var mPkgName: String fun init(context: Context){ this.mContext = context this.mPkgName = context.packageName } fun getPkgName() = if (this::mPkgName.isInitialized) mPkgName else "" /** * 设置自定义log */ fun setLogger(logger: IULogger?, keepLogcat: Boolean = true) { ULog.mLogger = logger ULog.mKeepLogcat = keepLogcat } }如何进行代码保留全部代码
如果你想在混淆时保留 `UTraceApp` 类的所有代码,你可以在 proguard-rules.pro 文件中添加以下代码:
```
-keep class com.oplus.utrace.sdk.UTraceApp {
*;
}
```
其中,`*` 表示保留该类的所有成员和方法。
完整的 proguard-rules.pro 文件示例如下:
```
# 保留 UTraceApp 类的所有代码
-keep class com.oplus.utrace.sdk.UTraceApp {
*;
}
# 其他混淆规则
```
这样就可以保留 `UTraceApp` 类的所有代码了。注意,在添加混淆规则时,一定要注意不要将必要的类或方法给混淆掉,否则会导致程序出现各种奇怪的问题。
阅读全文