繁体   English   中英

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

[英]How to retrieve a record from android database by click on Search button?

我已经开始为包含员工记录的Finder应用进行编码,并且在useractivity.java中单击“搜索”按钮时,用户将能够通过使用“ id”来查找员工记录,并且数据应显示在Empdetails中。textview中的java活动包含要显示的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);
    }
}

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

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

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

至于实际实现该逻辑的代码,请检查我给您的链接,然后尝试自行编码。

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

分离您的SQL脚本会很不错-使用字符串变量

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

要使用db.insert插入数据,请选择db.selectrawQuery 您需要使用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
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM