2014-01-13 112 views
0

我已经开始编码Finder应用程序,其中包含员工记录,当点击useractivity.java中的搜索按钮时,用户将能够使用'id'查找员工记录,并且数据应该显示在Empdetails.java中。textview中的活动包含3个文本框显示。下面是我的代码,请帮我在这如何通过点击搜索按钮从android数据库检索记录?

我的要求:我想在UserActivity.java给人一种ID,当我搜索按钮单击它应该在Empdetails获取记录的详细信息检索单个记录。 java的文本视图

输出:

ID:12345

名称:维贾伊·库马尔

电子邮件:[email protected]

如上所示

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

回答

0

放置在用于ID搜索UserActivity类的EDITTEXT。并在onClickListener的一个按钮使用SQL查询从数据库中检索数据(SELECT *从tableName其中id =(这里把用户将要搜索的ID号)),并在列表视图中显示它。 简单的例子使用这个参考。 http://javapapers.com/android/android-sqlite-database/

+0

您能否在上面我的问题的“问号”字段中提供搜索按钮的代码? – Gani

0

我将解释逻辑的方法来做到这一点:

你需要检查你从用户那里得到的ID,并与比较这ID存储在数据库中的每个 ID。一旦找到匹配项,您应该收集该ID下的所有详细信息。因此,您需要一个可读的数据库,然后尝试使用光标来收集信息。

检查这进一步信息: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. 

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

+0

嗨Gautham,你能否提供UserActivity.java中Search按钮的代码?因为我没有得到任何想法..... – Gani

+0

请检查我的编辑。 – SoulRayder

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。您需要使用光标从数据库查询中检索数据。从光标获得数据后,您可以根据需要进行安排。

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

您的DB 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 
} 
+0

嗨约翰,我不知道编码部分在Java中,我属于甲骨文DBA,但我对Java编码感兴趣,我必须在MS项目中提交这个,所以你可以告诉我代码搜索和代码检查插入之前重复数据?请帮我在这个编码部分....... – Gani

+0

请告诉我你的邮件ID我会邮寄给你我的整个代码,请通过并让我知道我的编码部分 – Gani

+0

的错误无需邮寄,在这里发布,所以很多用户可以帮助你。抱歉回复晚了。 –