gpt4 book ai didi

android - 尝试从 SQL 获取记录并比较 Android 中的字符串时出错

转载 作者:行者123 更新时间:2023-11-29 13:07:37 25 4
gpt4 key购买 nike

我用 SQL 创建了一个表,将 id 存储为字符串。现在,当我想通过比较字符串 id 来检索特定记录时,它返回 null pointer exception.我不知道如何解决这个问题。

这里是通过传递字符串调用数据库的 Activity

SearchDb.java

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SearchDb extends Activity implements OnClickListener {

EditText enid;
Button search;
TextView id, name, age;
String s;

Bundle value;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.searchdb);

enid = (EditText) findViewById(R.id.et_enid);
search = (Button) findViewById(R.id.bsearch);
id = (TextView) findViewById(R.id.tv_enid);
name = (TextView) findViewById(R.id.tv_name);
age = (TextView) findViewById(R.id.tv_age);

search.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bsearch:
try {
s = enid.getText().toString();

CreateDB fetch = new CreateDB(this);
value = fetch.fetchData(s);
fetch.close();

id.setText(value.getString("id"));
name.setText(value.getString("name"));
age.setText(value.getString("age"));

} catch (Exception e) {
Dialog d = new Dialog(this);
TextView tv = new TextView(this);
tv.setText(e.toString());
d.setTitle("Error!!");
d.setContentView(tv);
d.show();

}
}
// TODO Auto-generated method stub

}

}

CreateDB 类构造函数是--

public CreateDB(Context cxt) {
myContext = cxt;
myDB = myContext.openOrCreateDatabase(DbName, DbVersion, null);
}

搜索的方法是这样的--

public Bundle fetchData(String l) throws SQLException {


String[] chck=new String[]{l};
Cursor c = myDB.query(TbName, cols, KeyId+"=?", chck, null, null, null);
if (c != null) {
int iName = c.getColumnIndex(KeyName);
int iAge = c.getColumnIndex(KeyAge);
int iId = c.getColumnIndex(KeyId);

c.moveToFirst();

send.putString("id", c.getString(iId));
send.putString("name", c.getString(iName));
send.putString("age", c.getString(iAge));

return send;
}
// TODO Auto-generated method stub
return null;
}

最后我得到了 java.lang.NullPointerException在 LogCat 中。

请帮忙!

最佳答案

您的代码完全正确。它返回错误,因为存储值的包未初始化。所以它变成空,因此出现空指针异常错误。只需将您的 bundle 初始化为 Bundle send=new Bundle(); 即可。然后你的代码就可以正常工作了。

关于android - 尝试从 SQL 获取记录并比较 Android 中的字符串时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22501606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com