- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据库有问题。没有任何表和数据,只有空数据库。我应该在代码中更改什么?我想创建一个包含硬编码值的数据库,因为我想稍后在微调器中使用它们。
Database class
public class Database extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "CurrencyExchange.db";
private static final String CURRENCY_TABLE = "currency_table";
public Database(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "+CURRENCY_TABLE+ " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, BGN TEXT, NZD TEXT, ILS TEXT, RUB TEXT, CAD TEXT, USD TEXT, PHP TEXT, CHF TEXT, ZAR TEXT, AUD TEXT, JPY TEXT, TRY TEXT, HKD TEXT, MYR TEXT, THB TEXT, HRK TEXT, NOK TEXT, IDR TEXT, DKK TEXT, CZK TEXT, HUF TEXT, GBP TEXT, MXN TEXT, KRW TEXT, ISK TEXT, SGD TEXT, BRL TEXT, PLN TEXT, INR TEXT, RON TEXT, CNY TEXT, SEK TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+CURRENCY_TABLE);
onCreate(db);
}
public boolean insertData(){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
final String insert_data = "INSERT INTO "+CURRENCY_TABLE+ " VALUES (0,'BGN','NZD','ILS','RUB','CAD','USD','PHP','CHF','ZAR','AUD','JPY','TRY','HKD','MYR','THB','HRK','NOK','IDR','DKK','CZK','HUF','GBP','MXN','KRW','ISK','SGD','BRL','PLN','INR','RON','CNY','SEK')";
contentValues.put(CURRENCY_TABLE, insert_data);
return database.insert(CURRENCY_TABLE, null, contentValues) != -1;
}
主要 Activity
public class MainActivity extends AppCompatActivity {
Database database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = new Database(this);
database.insertData();
最佳答案
您想要做的(请参阅下文了解为什么这可能不是您想要做的)是将 insertData 方法更改为:-
public boolean insertData( String bgn, String nzd, String ils, String run, String cad,
String usd, String php, String chf, String zar, String aud, String jpy,
String TRY, String hkd, String myr, String thb, String hrk, String nok,
String idr, String dkk, String czk, String huf, String gbp, String mxn,
String krw, String isk, String sgd, String brl, String pln, String inr,
String ron, String cny, String sek){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("BGN",bgn);
contentValues.put("NZD",nzd);
contentValues.put("ILS",ils);
contentValues.put("RUB",run);
contentValues.put("CAD",cad);
contentValues.put("USD",usd);
contentValues.put("PHP",php);
contentValues.put("CHF",chf);
contentValues.put("ZAR",zar);
contentValues.put("AUD",aud);
contentValues.put("JPY",jpy);
contentValues.put("TRY",TRY);
contentValues.put("HKD",hkd);
contentValues.put("MYR",myr);
contentValues.put("BGN",bgn);
contentValues.put("THB",thb);
contentValues.put("HRK",hrk);
contentValues.put("NOK",nok);
contentValues.put("IDR",idr);
contentValues.put("DKK",dkk);
contentValues.put("CZK",czk);
contentValues.put("HUF",huf);
contentValues.put("GBP",gbp);
contentValues.put("MXN",mxn);
contentValues.put("KRW",krw);
contentValues.put("ISK",isk);
contentValues.put("SGD",sgd);
contentValues.put("BRL",brl);
contentValues.put("PLN",pln);
contentValues.put("INR",inr);
contentValues.put("RON",ron);
contentValues.put("CNY",cny);
contentValues.put("SEK",sek);
return database.insert(CURRENCY_TABLE, null, contentValues) != -1;
}
添加此方法
public Cursor getAllRowsFromCurrencyTable() {
SQLiteDatabase db = this.getWritableDatabase();
return db.query(CURRENCY_TABLE,null,null,null,null,null,null);
}
并在 Activity 中使用以下内容并运行一次:-
public class MainActivity extends AppCompatActivity {
Database database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
database = new Database(this);
// Add a row for tesing
database.insertData("A","B","C","D",
"E","F","G","H","I",
"J","K","L","M","N",
"O","P","Q","R","S",
"T","U","V","W","X",
"Y","Z","AA","AB","AC",
"AD","AE","AF"
);
// Get all the rows (1) and dump the resultant Cursor
Cursor csr = database.getAllRowsFromCurrencyTable();
DatabaseUtils.dumpCursor(csr);
csr.close(); // Should always close a Cursor when done with it.
}
}
结果:-
2019-05-13 19:37:28.974 I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@76cd9ae
2019-05-13 19:37:28.974 I/System.out: 0 {
2019-05-13 19:37:28.975 I/System.out: ID=1
2019-05-13 19:37:28.975 I/System.out: BGN=A
2019-05-13 19:37:28.975 I/System.out: NZD=B
2019-05-13 19:37:28.975 I/System.out: ILS=C
2019-05-13 19:37:28.975 I/System.out: RUB=D
2019-05-13 19:37:28.975 I/System.out: CAD=E
2019-05-13 19:37:28.975 I/System.out: USD=F
2019-05-13 19:37:28.975 I/System.out: PHP=G
2019-05-13 19:37:28.975 I/System.out: CHF=H
2019-05-13 19:37:28.975 I/System.out: ZAR=I
2019-05-13 19:37:28.975 I/System.out: AUD=J
2019-05-13 19:37:28.975 I/System.out: JPY=K
2019-05-13 19:37:28.976 I/System.out: TRY=L
2019-05-13 19:37:28.976 I/System.out: HKD=M
2019-05-13 19:37:28.976 I/System.out: MYR=N
2019-05-13 19:37:28.976 I/System.out: THB=O
2019-05-13 19:37:28.976 I/System.out: HRK=P
2019-05-13 19:37:28.976 I/System.out: NOK=Q
2019-05-13 19:37:28.976 I/System.out: IDR=R
2019-05-13 19:37:28.976 I/System.out: DKK=S
2019-05-13 19:37:28.976 I/System.out: CZK=T
2019-05-13 19:37:28.976 I/System.out: HUF=U
2019-05-13 19:37:28.976 I/System.out: GBP=V
2019-05-13 19:37:28.977 I/System.out: MXN=W
2019-05-13 19:37:28.977 I/System.out: KRW=X
2019-05-13 19:37:28.977 I/System.out: ISK=Y
2019-05-13 19:37:28.977 I/System.out: SGD=Z
2019-05-13 19:37:28.977 I/System.out: BRL=AA
2019-05-13 19:37:28.977 I/System.out: PLN=AB
2019-05-13 19:37:28.977 I/System.out: INR=AC
2019-05-13 19:37:28.977 I/System.out: RON=AD
2019-05-13 19:37:28.977 I/System.out: CNY=AE
2019-05-13 19:37:28.977 I/System.out: SEK=AF
2019-05-13 19:37:28.977 I/System.out: }
2019-05-13 19:37:28.977 I/System.out: <<<<<
如你所说
I want to create an database, with hardcoded values, because i'd want to use them later in spinner.
那么您可能不想使用货币代码列,而是希望每种货币有 x 行 1。
因此,也许可以考虑这个工作示例,其中一个 Spinner 列出了货币代码,并在您选择不同的代码时发出一个 Toast :-
修改后的Database.java
public class Database extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "CurrencyExchange.db";
public static final String CURRENCY_TABLE = "currency_table";
public static final String CURRENCY_ID_COLUMN = BaseColumns._ID; // Allows Spinner/ListView with Cursor Adapter
public static final String CURRENCY_CODE_COLUMN = "currency_code";
// The Currency Codes
public static final String[] currency_codes = new String[]{
"BGN", "NZD", "ILS", "RUB", "CAD", "USD", "PHP", "CHF",
"ZAR", "AUD", "JPY", "TRY", "HKD", "MYR", "THB", "HRK",
"NOK", "IDR", "DKK", "CZK", "HUF", "GBP", "MXN", "KRW",
"ISK ", "SGD", "BRL", "PLN", "INR", "RON", "CNY", "SEK"
};
public Database(Context context) {
super(context, DATABASE_NAME, null, 2); // Version changed so will drop old table and recreate new
}
@Override
public void onCreate(SQLiteDatabase db) {
/* OLD
db.execSQL("CREATE TABLE " + CURRENCY_TABLE + " ( ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"BGN TEXT, NZD TEXT, ILS TEXT, RUB TEXT, CAD TEXT, USD TEXT, PHP TEXT, CHF TEXT, " +
"ZAR TEXT, AUD TEXT, JPY TEXT, TRY TEXT, HKD TEXT, MYR TEXT, THB TEXT, HRK TEXT, " +
"NOK TEXT, IDR TEXT, DKK TEXT, CZK TEXT, HUF TEXT, GBP TEXT, MXN TEXT, KRW TEXT, " +
"ISK TEXT, SGD TEXT, BRL TEXT, PLN TEXT, INR TEXT, RON TEXT, CNY TEXT, SEK TEXT)");
*/
db.execSQL("CREATE TABLE " + CURRENCY_TABLE + "(" +
CURRENCY_ID_COLUMN + " INTEGER PRIMARY KEY, " + // NO NEED FOR AUTOINCREMENT (it's inefficient)
CURRENCY_CODE_COLUMN + " TEXT UNIQUE " + // UNIQUE means will not add duplicates
")");
addAllCurrencyCodes(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + CURRENCY_TABLE);
onCreate(db);
}
private void addAllCurrencyCodes(SQLiteDatabase database) {
if (database == null) {
database = this.getWritableDatabase();
}
database.beginTransaction();
for (String currency_code: currency_codes) {
addCurrencyCode(currency_code,database);
}
database.setTransactionSuccessful();
database.endTransaction();
}
public void addCurrencyCode(String code, SQLiteDatabase database) {
if (database == null) {
database = this.getWritableDatabase();
}
ContentValues contentValues = new ContentValues();
contentValues.put(CURRENCY_CODE_COLUMN,code);
database.insert(CURRENCY_TABLE,null,contentValues);
}
public Cursor getAllRowsFromCurrencyTable() {
SQLiteDatabase db = this.getWritableDatabase();
return db.query(CURRENCY_TABLE,null,null,null,null,null,null);
}
}
Activity 的布局(即添加了 Spinner)activity_main.xml :-
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Spinner
android:id="@+id/currrency_code_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Spinner>
</LinearLayout>
最后是更改后的 Activity MainActivity.java
public class MainActivity extends AppCompatActivity {
Database database;
Spinner currency_code_selector;
SimpleCursorAdapter mSCA;
Cursor csr;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currency_code_selector = this.findViewById(R.id.currrency_code_selector);
database = new Database(this);
// For testing only
csr = database.getAllRowsFromCurrencyTable();
DatabaseUtils.dumpCursor(csr);
manageCurrencyCodeSpinner();
}
private void manageCurrencyCodeSpinner() {
csr = database.getAllRowsFromCurrencyTable();
if (mSCA == null) {
mSCA = new SimpleCursorAdapter(
this, // The context
android.R.layout.simple_dropdown_item_1line, // The layout (stock layout used)
csr, // The Cursor for the Spinner
new String[]{Database.CURRENCY_CODE_COLUMN}, // The columns holding the data
new int[]{android.R.id.text1}, // The View into which the data is placed
0 // 0 is fine
);
currency_code_selector.setAdapter(mSCA); // Tie the adapter to the Spinner
// Setup selection handling
currency_code_selector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (view == null) return;
Toast.makeText(view.getContext(),
"You have just selected the currency code " +
csr.getString(csr.getColumnIndex(Database.CURRENCY_CODE_COLUMN)) +
". The ID is " + String.valueOf(id),
Toast.LENGTH_SHORT ).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} else {
mSCA.swapCursor(csr); // if spinner already setup refresh the contents
}
}
@Override
protected void onDestroy() {
super.onDestroy();
csr.close(); //<<<<<<<<<< close the cursor when done with it
}
@Override
protected void onResume() {
super.onResume();
manageCurrencyCodeSpinner(); // refresh the Spinner as data may have changed
}
}
结果:-
您只需相信我的话,Toast 就可以工作(可以捕获它)
注意要部署此更改,您应该执行以下操作之一:-
super(context, DATABASE_NAME, null, 1);
更改为 super(context, DATABASE_NAME, null, 2);
关于java - 我创建了一个空数据库,里面没有任何表和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56108132/
在我的应用程序中,我使用 scrape(string url) 方法从网页中抓取链接。可以说它每次都返回我 10 个 url。 我想从每个抓取的 url 中抓取 10 个链接。 长话短说: (第 1
正如标题所说,我需要将 php 放入由 php 回显的 javascript 中 例如: if (something) then (some php)') ?> 这不是真正的代码,只是可能有助于理解
我有一个 ng-repeat 使用 ng-switch 来分隔 ng-repeat 内部的部分,我想在 ng-switch 组上应用一个 orderby 过滤器,但我似乎无法让它工作:
我是 shell 的新手。我不太了解以下功能。这个函数基本上把小时加1。 我想知道为什么开发人员在 $g_current_hour+1 前面放了“10#”。根据我的理解,shell 中的剂量 # 是指
为了在 MongoDB 中对元素进行分组和计数,我已经筋疲力尽了。有很多帖子,但没有一个是我需要的。 这是一个基于以下内容的示例: styvane answer db.VIEW_HISTORICO.a
int main() { int count = 0; string prev = " "; string current; while (cin>>current)
$0表示传递给swift闭包的第一个参数,是swift语言的语法糖。swift会自动为内联闭包提供速记参数名称,可使用$0,$1,$2等名称来引用闭包参数的值。 代码
我想把这个 If 放在宏中,但它总是给我一个错误。我不知道“或”用得是否正确。 Dim SMAT As String SMAT = "blahblahblah" (...) If Ce
这是 JSFiddle 链接:https://jsfiddle.net/fmdsu9Lo/ 我想添加一个悬停功能,以便将鼠标悬停在菜单上将在该菜单选项卡上应用 .current 样式,同时将其从当前打
是否可以在 SQL 中执行类似的操作? SELECT SUM(jobRequirements.number) as total, SUM(jobRequirements.number WHER
我有 3 个 SQL 表。 游戏 wo_tenis_partidos 选择 wo_tenis_pronosticos 配额 wo_tenis_cuotas_ha2 我需要获取满足两个条件的所有行: 条
我有这张乘客表日期: 这意味着在 Reservation 000004 中,有两个行程,分别是 Itinerary 0000010 (AAC Hangar - Anvaya Cove) 和 00000
里面
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-topic在这里
我在模态框内显示一个弹出窗口,我可以在关闭时隐藏它,但在点击模态框外时无法隐藏它。我试着在关闭时隐藏它,这很好。代码在这里 $('.close, .close-button').click(funct
我所在的团队正在使用 MVC 架构开发 C# 程序。 当我完成 MVC 教程时,我有一些疑问。请帮我澄清一下这个疑惑。 1) Controller 可以对 View 进行哪些修改? 2)我认为所有 U
我正坐在一些通过#defines 生成大量代码的遗留代码上。现在我知道在 #define 中不可能有 #ifdef,但是 #if 可能吗?我想为特定类型添加一些特化。 (无需进行重大更改,例如使用模板
这是我试图用来创建触发器的代码: -- Dumping structure for trigger kavanga_lead.click_links_insert DROP TRIGGER IF EX
我想写这样的东西: #define COV_ON(x) \ #ifdef COVERAGE_TOOL \ _Pragma (CO
我在这样的定义的帮助下初始化一个结构数组: #define FLAGCODE(name) { #name, MNT_ ## name } struct { const char
我尝试将 css 和 jquery 应用于 div 元素,但它不接受 $(this) 参数。我想知道为什么我不能使用 $(this) 作为 div 元素的引用。 blabla.css({ 'top':
我是一名优秀的程序员,十分优秀!