如何通过单击“搜索”按钮从android数据库中检索记录?

时间:2014-01-13 09:48:27

标签: android database search

我已开始编写包含员工记录的Finder应用程序,用户可以在单击useractivity.java中的“搜索”按钮时使用“id”查找员工记录,并且数据应显示在Empdetails.java活动中textview包含3个要显示的文本字段。以下是我的代码,请帮助我

我的要求:我想通过在UserActivity.java中提供 id 来检索单个记录,当我点击“搜索”按钮时,它应该在文本视图中的Empdetails.java中获取记录详细信息

输出:

id:12345

姓名:vijay kumar

电子邮件:vijay@gmail.com

如上所示

非常感谢 Vijay Kumar。

1)AdminActivity.java

public class AdminActivity extends Activity {

String id,name,email;
SQLiteDatabase db;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin);
    db=openOrCreateDatabase("EMP",MODE_PRIVATE,null);
    db.execSQL("CREATE TABLE IF NOT EXISTS EMP(id varchar,name varchar,email varchar);");
}

public void Submit(View view)
{       
EditText edittext1=(EditText) findViewById(R.id.id);
    EditText edittext2=(EditText) findViewById(R.id.name);
    EditText edittext3=(EditText) findViewById(R.id.email);
    id=edittext1.getText().toString();
    name=edittext2.getText().toString();
    email=edittext3.getText().toString();
    db.execSQL("INSERT INTO EMP(id,name,email) values ('"+id+"','"+name+"','"+email+"');");

    if(id.equals("") && name.equals("") && email.equals(""))
    {
        Toast.makeText(getApplicationContext(), "Please enter details and submit", Toast.LENGTH_SHORT).show();
    }
    else 
        if(id.equals(""))
       {
            Toast toast=new Toast (getApplicationContext());
            toast.setDuration(Toast.LENGTH_LONG);
            Toast.makeText(getApplicationContext(), "Enter id....", Toast.LENGTH_SHORT).show();
       }
    else
        if(name.equals(""))
           {
            Toast toast=new Toast (getApplicationContext());
            toast.setDuration(Toast.LENGTH_LONG);
            Toast.makeText(getApplicationContext(), "Enter Name....", Toast.LENGTH_SHORT).show();
           }
        else
             if(email.equals(""))
            {
            Toast toast=new Toast (getApplicationContext());
            toast.setDuration(Toast.LENGTH_LONG);
             Toast.makeText(getApplicationContext(), "Enter email.....", Toast.LENGTH_SHORT).show();
            }
             else 
                { 
                    Toast toast=new Toast (getApplicationContext());
                    toast.setDuration(Toast.LENGTH_LONG);
                    edittext1.setText("");
                    edittext2.setText("");
                    edittext3.setText("");
                    Toast.makeText(getApplicationContext(), "Data submitted successfully", Toast.LENGTH_SHORT).show();
                    db.close();
                 }
            }

public void Exit(View view){
    System.exit(0);
}

}

2)UserAvtivity.java

public class UserActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState)
            {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);
    }

    public void Search(View view)
    {
    /////???????????????
    }

    public void Exit(View view)
    {
    System.exit(0);
    }
}

3 个答案:

答案 0 :(得分:0)

在UserActivity类上放置一个editText用于id搜索。并使用sql查询从一个Button的onClickListener检索数据库中的数据(SELECT * From tableName where id =(这里将id no用户将要搜索的位置))并将其显示在listview中。 对于简单示例,请使用此参考。 http://javapapers.com/android/android-sqlite-database/

答案 1 :(得分:0)

我将解释执行此操作的逻辑方法:

您需要检查从用户处获得的ID,并将此ID与存储在数据库中的每个 ID进行比较。找到匹配项后,您应该收集该ID下的所有详细信息。因此,您需要一个可读数据库,然后尝试使用 Cursor 收集信息。

检查以获取更多信息:http://www.vogella.com/tutorials/AndroidSQLite/article.html

在搜索按钮的 onClick()方法中中编写所有此代码

编辑:在 onClick()事件中包含上述功能的代码:

search.setOnClickListener(new View.OnClickListener() {

        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            //Include your code here
        }   
     });

还可以在布局中创建搜索按钮,然后使用

对其进行实例化
 private Button search = null; // This line inside your MainActivity class
 search = (Button)findViewById(R.id.search); //This line inside onCreate function.

至于实际实现该逻辑的代码,请检查我给你的链接并尝试自己编写。

答案 2 :(得分:0)

创建一个新类来创建数据库并进行查询/选择,插入和更新。

将你的SQL脚本分开是很好的 - 使用字符串变量

private static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS EMP(id varchar, name varchar, email varchar);";

使用db.insert插入数据,选择db.select或 rawQuery 。您需要使用 Cursor 从数据库查询中检索数据。从光标获取数据后,您可以根据需要进行排列。

private static final String SELECT_ID = "SELECT name, mail FROM EMP WHERE id = ? ;";

您的数据库ID必须是INTEGER而不是varchar - 它是主键还是? 主键:http://en.wikipedia.org/wiki/Unique_key SQLite Tuts:http://www.tutorialspoint.com/sqlite/index.htm

http://developer.android.com/training/basics/data-storage/databases.html

搜索代码

Button search = (Button) findViewById(R.id.but_search);
search.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             // DO queries, Update TextView or call your methods
         }
     });

这很糟糕:

id=edittext1.getText().toString();
name=edittext2.getText().toString();
email=edittext3.getText().toString();
db.execSQL("INSERT INTO EMP(id,name,email) values ('"+id+"','"+name+"','"+email+"');");

首先检查数据然后将其插入数据库是很好的。

 if(email.lenght() > 0 ){
 // check other data, do things
 }