【问题标题】:How to retrieve a record from android database by click on Search button?如何通过单击搜索按钮从 android 数据库中检索记录?
【发布时间】:2014-01-13 09:48:26
【问题描述】:

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

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

输出:

id:12345

姓名:维杰·库马尔

电子邮件:vijay@gmail.com

如上图所示

谢谢提前 维杰·库马尔。

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

【问题讨论】:

    标签: android database search


    【解决方案1】:

    在 UserActivity 类上放置一个 editText 用于 id 搜索。并在使用 sql 查询的 Button 的 onClickListener 上从数据库中检索数据(SELECT * From tableName where id = (Here put id no where user are going to search))并将其显示在列表视图中。 对于简单的示例,请使用此参考。 http://javapapers.com/android/android-sqlite-database/

    【讨论】:

    • 能否请您在上面我的问题的“问号”字段中提供搜索按钮的代码??
    【解决方案2】:

    我将解释这样做的逻辑方法:

    您需要检查您从用户那里获得的 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.
    

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

    【讨论】:

    • 嗨 Gautham,您能否提供 UserActivity.java 中搜索按钮的代码?因为我对此一无所知.....
    【解决方案3】:

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

    分离你的 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 从数据库查询中检索数据。从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
     }
    

    【讨论】:

    • 嗨,约翰,我不知道 java 中的编码部分,我属于 oracle DBA,但我对 java 编码很感兴趣,我必须在 MS 项目中提交这个,所以请告诉我代码插入重复数据前的搜索和检查代码???请在这个编码部分帮助我......
    • 请告诉我您的邮件 ID,我会将我的整个代码邮寄给您,请通过并告诉我编码部分中的错误
    • 不用邮寄,发在这里,这么多网友可以帮到你。抱歉回复晚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多