Android:如何将单个表字段的值设置为String变量?

时间:2015-04-23 13:52:50

标签: android sql database sqlite crash

我是Android编程的新手。我正在创建一个应用程序,该应用程序从表 my_table 中的特定行(其中 id = 1 )获取单个字段 Phone 的值并将其分配给String 数字。然后打印该字符串。但该应用程序在获取数据后仍然崩溃。

我从哪里搬?我哪里错了?我错过了什么?

以下是代码。

MainActivity.java

$tables = array("buildings", "medical", "other", "tools", "traps", "weapons"); 
$tableArr = array();
foreach ($tables as $table) {

    // Get tables from database
    $sth = $db->query("SELECT * FROM $table");
    $result = $sth->fetchAll();

    if(isset($result)){
        $tableArr[$table] = $result;
    }else{
        $tableArr[$table] = '';
    }


} //End loop

print_r($tableArr);

Output.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);
}
}

的Manifest.xml

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);

}
}

logcat的:

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com.ali.readonefield / com.ali.readonefield.Output}:android.database.sqlite.SQLiteException:near“android”:语法错误(代码1): ,同时编译:android.database.sqlite.SQLiteCursor@42a2c6b0

2 个答案:

答案 0 :(得分:0)

试试这个:

String number = csr.getString(csr.getColumnIndex("columnName"));

答案 1 :(得分:0)

$res= $mysqli->query("SELECT titre FROM Bibliographie WHERE Nom_Auteur LIKE '%$auteur%'"); 

$result = array();
while ($row=$res->fetch_assoc()) {
     $result[] = $row['titre'];
} 
var_dump($result);
// simple and easy to understand