Java 如何选择特定列sql的最后一行值

Java 如何选择特定列sql的最后一行值,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我是android的初学者,我不明白我错在哪里,我错在哪里 我正在尝试从用户处获取上次编辑的消息或上次保存的消息 当用户点击“发送”按钮时,它需要转到特定的whats应用程序编号和用户的当前位置 我的数据库名是mydb,表名是Mytable 我有两列,第一列是id auto increment,第二列是msg 但当我运行我的代码时,会得到如下输出 //我的输出是// EMERGENCY null http://maps.google.com/maps?saddr=12.88758733,74

我是android的初学者,我不明白我错在哪里,我错在哪里

我正在尝试从用户处获取上次编辑的消息或上次保存的消息 当用户点击“发送”按钮时,它需要转到特定的whats应用程序编号和用户的当前位置

我的数据库名是mydb,表名是Mytable 我有两列,第一列是id auto increment,第二列是msg

但当我运行我的代码时,会得到如下输出

//我的输出是//

EMERGENCY

null

http://maps.google.com/maps?saddr=12.88758733,74.83737172
我得到的是空值,而不是上次保存的消息。 请引导我,我在新的安卓系统

谢谢

//MY MAIN ACTIVITY//   
package com.myproject.harjinder_singh_lohia_bobby.harjicateringapp;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
  SQLiteDatabase db;
  String ms,msgg;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    db=openOrCreateDatabase("mydb",MODE_PRIVATE,null);
    db.execSQL("CREATE TABLE IF NOT EXISTS Mytable(id INTEGER PRIMARY KEY AUTOINCREMENT,msg VARCHAR(100));");
}
public void onclicksavemsg(View view)
{
    EditText tempmsg =(EditText) findViewById(R.id.etmsg);
    String name=tempmsg.getText().toString();
    db.execSQL("INSERT INTO Mytable(msg)VALUES('"+name+"');");
    TextView tv=findViewById(R.id.tvv);
    Cursor last_msg = db.rawQuery("SELECT * FROM Mytable WHERE id = '"+db.rawQuery("SELECT MAX(id) FROM mytable",null)+"'",null);
    if(last_msg.moveToLast())
    {
        msgg=last_msg.getString(1);
    }
    tv.setText(msgg);
}

public void send(View view)
{
    GPStracker g = new GPStracker(getApplicationContext());
    Location l = g.getLocation();
    if (l != null) {
        double lat = l.getLatitude();
        double lon = l.getLongitude();
        String message = "\nhttp://maps.go"+"ogle.com/maps?saddr=" + lat + "," + lon;

        //String selectQuery = "SELECT * FROM Mytable ORDER BY column DESC LIMIT 1";
       Cursor last_msg = db.rawQuery("SELECT msg FROM Mytable WHERE id = '"+db.rawQuery("SELECT MAX(id) FROM mytable",null)+"'",null);
        if(last_msg.moveToLast())
       {
           ms=last_msg.getString(0);

       }
        String num = "xxxxxxxxxx";
        Intent sendIntent = new Intent("android.intent.action.MAIN");
        sendIntent.setAction(Intent.ACTION_VIEW);
        sendIntent.setPackage("com.whatsapp");
        String url = "https://api.whatsapp.com/send?phone=" + num + "&text="+"\nEMERGENCY\n"+ms;
        sendIntent.setData(Uri.parse(url+message));
        if (sendIntent.resolveActivity(MainActivity.this.getPackageManager()) != null) {
            startActivity(sendIntent);
        }
    }

}
}

//我希望我的输出像

EMERGENCY

SAVE ME I AM IN DANGER HELP ME

http://maps.google.com/maps?saddr=12.88758733,74.83737172

将查询更改为此原始查询

select max(id) as id from your_table_name
因为您从查询中只得到一个值,所以不需要调用

if(last_msg.moveToLast())  
 { msgg=last_msg.getString(1);   
}   
tv.setText(msgg);  
就用,

cursor.movetoposition(0);  
    msgg=cursor.getString(1);
    tv.setText(msgg);

您在代码中犯了两次相同的错误:

Cursor last_msg = db.rawQuery("SELECT * FROM Mytable WHERE id = '"+db.rawQuery("SELECT MAX(id) FROM mytable",null)+"'",null);
不能添加2个rawQuery方法的结果,这意味着添加2个游标对象。更改第一条语句,如下所示:

Cursor last_msg = db.rawQuery("SELECT * FROM Mytable WHERE id = (SELECT MAX(id) FROM mytable)", null);
第二条至:

Cursor last_msg = db.rawQuery("SELECT msg FROM Mytable WHERE id = (SELECT MAX(id) FROM mytable)", null);

这给了我索引外的错误,兄弟可以如何克服错误?把它放在游标的if循环中。getCount>0,带有日志和调试。它根本不工作,我的意思是没有反应,当我单击“无响应”时,我的错误是什么?这是你为PAS所做的巨大帮助。。。我挣扎了这么多天。。。最后我试着做一个新的问题,我今天刚刚看到了yrs,这对你们来说是很大的帮助。。。非常感谢你的兄弟爱你的兄弟