【问题标题】:(1) near null syntax error(1) 接近空的语法错误
【发布时间】:2015-04-24 07:16:45
【问题描述】:
04-24 12:15:21.671: E/AndroidRuntime(26419):java.lang.RuntimeException: Unable to start activity ComponentInfo{com.flocator/com.flocater.Friendfinderactivity}:android.database.sqlite.SQLiteException: near "null": syntax error(code 1): , while compiling: select * from null

这是我每次尝试编译时都会遇到的错误..我是一个正在学习的 android,所以我对此了解不多...所以任何人都可以帮我解决这个问题.. 我也收到错误Source not found 所以你能帮我解决这两个问题吗?

代码在Friendfnderactivity.java

package com.flocater;

import com.flocator.R;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;



public class Friendfinderactivity extends Activity {
/** Called when the activity is first created. */
public static String deviceid = "deviceid";

public static String device_id = "device_id";
public static String user_id = "user_id";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    DBHelper dbhelper = new DBHelper(this);
    SQLiteDatabase db = dbhelper.getWritableDatabase();

    TelephonyManager tm = (TelephonyManager) this
            .getSystemService(Context.TELEPHONY_SERVICE);

    deviceid = tm.getDeviceId();

    Cursor cursor = db.rawQuery("select * from "
            + Database.SUBSCRIBE_TABLE_NAME, null);

    int rows = cursor.getCount();

    if (rows > 0) {
        cursor.moveToFirst();
        user_id = cursor.getString(0);
        device_id = cursor.getString(3);
    }
    db.close();
    if (device_id.equals(deviceid)) {
        setContentView(R.layout.subscriber);
    } else
        setContentView(R.layout.subscribe);
 }

public void subscribeUser(View v) {
    // get access to views
    EditText editName = (EditText) this.findViewById(R.id.editName);
    EditText editPhone = (EditText) this.findViewById(R.id.editPhone);
    EditText editArea = (EditText) this.findViewById(R.id.editArea);
    EditText editCity = (EditText) this.findViewById(R.id.editCity);

    boolean done = Database.addUser(this, editName.getText().toString(),
            editPhone.getText().toString(), deviceid, editArea.getText()
                    .toString(), editCity.getText().toString());

    if(done) {
        Toast.makeText(this, "Subscribed Successfully!",   Toast.Length_Long).show(); 
        Intent intent = new Intent(this,Friendfinderactivity.class);
        startActivity(intent);
    }
    else
        Toast.makeText(this, "Sorry! Could not subscribe!",                             Toast.LENGTH_LONG).show();
}

public void addFriends(View v) {
    Intent intent = new Intent(this,AddFriends.class);
    startActivity(intent);
}

public void viewFriends(View v) {
    Intent intent = new Intent(this,SeeFriends.class);
    startActivity(intent);
}

}

【问题讨论】:

  • 这里的数据库是什么?光标 cursor = db.rawQuery("select * from " + Database.SUBSCRIBE_TABLE_NAME, null);
  • Database.SUBSCRIBE_TABLE_NAME的值是多少?
  • select * from nullDatabase.SUBSCRIBE_TABLE_NAME 的值还能是什么?
  • Database 是另一个 java 类,其中描述了它的字段很少的代码是.. public class Database { public static String SUBSCRIBE_TABLE_NAME;公共静态字符串 FRIENDS_TABLE_NAME; }
  • SUBSCRIBE_TABLE_NAME 值为空。将您的表名设置为此变量。 @akashsharma

标签: android eclipse sqlite


【解决方案1】:

错误很明显"select * from null"那是你的SQL查询

这里的表名是空的。

您只需要添加表名。 例如 将以下行替换为

Cursor cursor = db.rawQuery("select * from "
            + Database.SUBSCRIBE_TABLE_NAME, null);

这个

Cursor cursor = db.rawQuery("select * from your_table_name", null);

我只是告诉您根据需要修改的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多