我是Android编程的新手。我正在制作一个应用程序,该应用程序从表my_table的特定行(其中id = 1)上获取单个字段Phone的值,并将其分配给String编号。然后打印该字符串。但是,应用程序在获取数据后仍然崩溃。
我要从这里搬到哪里?我哪里错了?我想念什么?
下面是代码。
MainActivity.java
public class MainActivity extends Activity {
SQLiteDatabase db;
EditText pin, phone, email;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton btn=(ImageButton)findViewById(R.id.btn);
pin = (EditText)findViewById(R.id.pin);
phone = (EditText)findViewById(R.id.phone);
email = (EditText)findViewById(R.id.email);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SaveData();
Toast.makeText(MainActivity.this,"Info saved!", Toast.LENGTH_SHORT).show();
}
});
}
public void SaveData(){
db = this.openOrCreateDatabase("my_database",MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS my_table(id INTEGER PRIMARY KEY AUTOINCREMENT, Pin varchar,"
+ " Phone varchar, EMail varchar);");
String query = "INSERT INTO my_table (Pin,Phone,EMail) VALUES ('"+pin.getText().toString()+"','"+phone.getText().toString()+"','"+email.getText().toString()+"')";
db.execSQL(query);
Display();
}
void Display(){
Intent Intent=new Intent(MainActivity.this,Output.class);
startActivity(Intent);
}
}
Output.java
public class Output extends Activity{
TextView phone;
SQLiteDatabase db;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.output);
db = this.openOrCreateDatabase("my_database",MODE_PRIVATE, null);
Cursor csr = db.rawQuery( "SELECT Phone FROM my_table WHERE id = 1", null);
String number = csr.toString();
db.execSQL(number);
phone.setText(number);
}
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ali.readonefield"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="22" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Output"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
LogCat:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ali.readonefield/com.ali.readonefield.Output}: android.database.sqlite.SQLiteException: near "android": syntax error (code 1): , while compiling: android.database.sqlite.SQLiteCursor@42a2c6b0
请您参考如下方法:
尝试这个:
String number = csr.getString(csr.getColumnIndex("columnName"));