2014-10-19 4 views
0

나는 이클립스에서 작은 안드로이드 프로젝트를하고있다. 데이터베이스 테이블을 만들었지 만 EditText 컨트롤을 사용하여 열을 채우는 대신 파일 (txt 또는 xml)의 데이터를 사용하여 채 웁니다. EditText를 사용하여 아래 표시된 표가 있습니다.eclipse에서 파일의 데이터베이스 테이블을 채우는 방법은 무엇입니까?

데이터베이스 클래스 :

@Override 
public void onCreate(SQLiteDatabase sqldb) { 
    myTableQuery = "CREATE TABLE staff"  + 
      "(staff_ID INTEGER PRIMARY KEY," + 
      "staff_Name TEXT,"    + 
      "appointment_Day TEXT,"   + 
      "start_Time TEXT,"    + 
      "end_Time TEXT,"     + 
      "comment TEXT)"; 

    sqldb.execSQL(myTableQuery); 
} 

public void AddStaff(String id, String name, String day, String start, String end, String comment){ 

    SQLiteDatabase sqldb=this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put("staff_ID", id); 
    values.put("staff_Name", name); 
    values.put("appointment_Day", day); 
    values.put("start_Time", start); 
    values.put("end_Time", end); 
    values.put("comment", comment); 

    sqldb.insert("staff", null, values); 
    sqldb.close(); 


} 

AddActivity 클래스 :

public void AddRowItemTable(View v){ 


    EditText staff_id = (EditText) findViewById(R.id.sId); 
    EditText staff_name = (EditText) findViewById(R.id.sname); 
    EditText day = (EditText) findViewById(R.id.day); 
    EditText start = (EditText) findViewById(R.id.start); 
    EditText end = (EditText) findViewById(R.id.end); 
    EditText comment = (EditText) findViewById(R.id.comment); 

    String id = staff_id.getText().toString(); 
    String name = staff_name.getText().toString(); 
    String d = day.getText().toString(); 
    String s = start.getText().toString(); 
    String e = end.getText().toString(); 
    String c = comment.getText().toString(); 

    MainActivity.myDB.AddStaff(id, name, d, s, e, c); 
    Intent newintent=new Intent(this, MainActivity.class); 
    startActivity(newintent); 

} 

대신 이런 식으로 일을, 어떻게 그것을 채울 파일에서 데이터를 읽을 수 있습니다. 파일은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?> 
<staff> 

    <record staff_ID="S1" staff_Name="John" appointment_Day="Monday" start_Time="9" end_Time="12" comment="xxx"/> 
    <record staff_ID="S2" staff_Name="Bob" appointment_Day="Monday" start_Time="10" end_Time="11" comment="xxx"/> 

</staff> 

+0

그리고 시도 할 때 어려움이 있습니까? 파일을 읽고, 값을 추출하고, 데이터베이스에 저장하는 것입니다 ... – Henry

+0

어려운 점은 파일에서 읽을 방법을 모른다는 것입니다. 입력 (EditText)에서 데이터를 추출하는 방법 만 알고 있습니다. 어떤 힌트 .. !! –

+0

http://developer.android.com/training/basics/network-ops/xml.html – Henry

답변

0

먼저, assets 폴더에있는 xml을 구문 분석 한 다음 해당 값을 db에 넣어야합니다. 이 link에서 android xml 구문 분석을 시도해 볼 수 있습니다. 간단한 pull 구문 분석 코드는 다음과 같습니다. 여기서 test.xml은 assets 폴더에서 xml을 보유하고있는 파일 이름입니다. 이 도움이 될 수 있습니다

 //File in assets folder 
     InputStream tinstr = null; 
     try { 
      XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser parser = factory.newPullParser(); 
      AssetManager assetManager = getAssets(); 
      tinstr = assetManager.open("test.xml"); 
      parser.setInput(new InputStreamReader(tinstr)); 
     } catch (FileNotFoundException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
0
If you want to parse your xml file, you can using XmlPullParser. For example, put your xml file (here is test.xml) in the assets folder. 
and the xml file is: 
<?xml version="1.0" encoding="utf-8"?> 
<staff> 

    <record staff_ID="S1" staff_Name="John" appointment_Day="Monday" start_Time="9" end_Time="12" comment="xxx"/> 
    <record staff_ID="S2" staff_Name="Bob" appointment_Day="Monday" start_Time="10" end_Time="11" comment="xxx"/> 

</staff> 

And the code to read the xml file is: 

1. firstly, you can define a class to present the data, like 
public class Record{ 
     private String staff_id; 
     private String staff_name; 
     private String appointment_day; 
     private int start_time; 
     private int end_time; 
     private String comment; 
     @Override 
     public boolean equals(Object o) { 
      // TODO Auto-generated method stub 
      return super.equals(o); 
     } 
     @Override 
     public String toString() { 
      // TODO Auto-generated method stub 
      return super.toString(); 
     } 
     public String getStaff_id() { 
      return staff_id; 
     } 
     public void setStaff_id(String staff_id) { 
      this.staff_id = staff_id; 
     } 
     public String getStaff_name() { 
      return staff_name; 
     } 
     public void setStaff_name(String staff_name) { 
      this.staff_name = staff_name; 
     } 
     public String getAppointment_day() { 
      return appointment_day; 
     } 
     public void setAppointment_day(String appointment_day) { 
      this.appointment_day = appointment_day; 
     } 
     public int getStart_time() { 
      return start_time; 
     } 
     public void setStart_time(int start_time) { 
      this.start_time = start_time; 
     } 
     public int getEnd_time() { 
      return end_time; 
     } 
     public void setEnd_time(int end_time) { 
      this.end_time = end_time; 
     } 
     public String getComment() { 
      return comment; 
     } 
     public void setComment(String comment) { 
      this.comment = comment; 
     } 

    } 
2. In the place where you want to read the file, define 
private List<Record> lists = new ArrayList<Record>(); 
this lists contains the record, here in this test file, there are two records to read 

3. The cord to read the file: 

// File in assets folder 
     InputStream tinstr = null; 
     XmlPullParserFactory factory; 
     try { 
      factory = XmlPullParserFactory.newInstance(); 
      factory.setNamespaceAware(true); 
      XmlPullParser parser = factory.newPullParser(); 
      AssetManager assetManager = getAssets(); 
      tinstr = assetManager.open("test.xml"); 
      parser.setInput(new InputStreamReader(tinstr)); 
      int eventType = parser.getEventType(); 
      Record record = null; 
      while (eventType != XmlPullParser.END_DOCUMENT) { 
       String xmlName = parser.getName(); 
       switch (eventType) { 
       case XmlPullParser.START_TAG: 
        if(xmlName.endsWith("record")){ 
         record = new Record(); 
         record.setStart_time(Integer.valueOf(parser.getAttributeValue(null, "start_Time"))); 
         record.setAppointment_day(parser.getAttributeValue(null, "appointment_Day")); 
         record.setComment(parser.getAttributeValue(null, "comment")); 
         record.setEnd_time(Integer.valueOf(parser.getAttributeValue(null, "end_Time"))); 
         record.setStaff_id(parser.getAttributeValue(null, "staff_ID")); 
         record.setStaff_name(parser.getAttributeValue(null, "staff_Name")); 
        } 
        break; 
       case XmlPullParser.END_TAG: 
        if(xmlName.endsWith("record") && record != null){ 
         lists.add(record); 
        } 
        break; 
       default: 
        break; 
       } 
       eventType = parser.next(); 
      } 
     } catch (XmlPullParserException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

희망.

관련 문제