2013-12-09 5 views
0

내 안드로이드 애플 리케이션에서 나는 sqloite ..에서 데이터베이스를 만들려고 노력하고있다. 나는 VARCHAR를 만들 수 있었다 ... 나는 firstname, middlename 및 lastname을위한 databse를 만들기위한 코드를 만들었다. ..하지만 내가 날짜를 추가 할 때 ... DOB .. 앱이 충돌하고 있습니다 ... 이름에 VARCHAR를주었습니다 ... 날짜에 숫자를주었습니다 ...이 숫자가 실수 일 수 있다고 생각하지만 ... 정수, 텍스트하지만 isalo 충돌. 나는 PLS 확인하고 오류 ..pls가안드로이드 Sqlite 날짜 오류

mainActivity

{ 

    SQLiteDatabase db; 
    String fname,mname,lname,cfname,cmname,clname,bday,bmonth,byear,ett1,ett2,ett3,ett4,ett5,ett6,ett7,ett8,ett9; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 

    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fullexplanationentry_xm); 

     db = openOrCreateDatabase("MyDBI", MODE_PRIVATE, null); 


     db.execSQL("CREATE TABLE IF NOT EXISTS DATA (fname VARCHAR, mname VARCHAR,lname VARCHAR,cfname VARCHAR, cmname VARCHAR,clname VARCHAR,bday NUMERIC,bmonth NUMERIC,byear NUMERIC);"); 


    } 

    public void save(View V) 
    { 
     EditText et1 = (EditText) findViewById (R.id.editText1); 
     EditText et2 = (EditText) findViewById (R.id.editText2); 
     EditText et3 = (EditText) findViewById (R.id.editText3); 
     EditText et4 = (EditText) findViewById (R.id.editText4); 
     EditText et5 = (EditText) findViewById (R.id.editText5); 
     EditText et6 = (EditText) findViewById (R.id.editText6); 
     EditText et7 = (EditText) findViewById (R.id.editText7); 
     EditText et8 = (EditText) findViewById (R.id.editText8); 
     EditText et9 = (EditText) findViewById (R.id.editText9); 



         fname = et1.getText().toString(); 

         mname = et2.getText().toString(); 

         lname = et3.getText().toString(); 

         cfname = et4.getText().toString(); 

         cmname = et5.getText().toString(); 

         clname = et6.getText().toString(); 

         bday = et7.getText().toString(); 

         bmonth = et8.getText().toString(); 

         byear = et9.getText().toString(); 


         db.execSQL("INSERT INTO Data VALUES('"+fname+"', '"+mname+"','"+lname+"','"+cfname+"', '"+cmname+"','"+clname+"','"+bday+"', '"+bmonth+"','"+byear+"');"); 
    } 

    public void saveddata(View V) 
    { 
     Cursor c = db.rawQuery("SELECT * from Data", null); 
     int count = c.getCount(); 
     c.moveToFirst(); 




     TableLayout tableLayout = new TableLayout(getApplicationContext()); 
     tableLayout.setVerticalScrollBarEnabled(true); 
     TableRow tableRow; 
     TextView textView1, textView2,textView3,textView4,textView5,textView6,textView7,textView8,textView9,textView10,textView11; 
     tableRow = new TableRow(getApplicationContext());   
     textView1 = new TextView(getApplicationContext()); 
     textView1.setText("FirstName"); 
     textView1.setTextColor(Color.RED); 
     textView1.setTypeface(null, Typeface.BOLD); 
     textView1.setPadding(10, 10, 10, 10); 
     tableRow.addView(textView1); 

     textView2 = new TextView(getApplicationContext()); 
     textView2.setText("LastName"); 
     textView2.setTextColor(Color.RED); 
     textView2.setTypeface(null, Typeface.BOLD); 
     textView2.setPadding(10, 10, 10, 10); 
     tableRow.addView(textView2); 

     tableLayout.addView(tableRow); 

     for(Integer j=0; j<count; j++) 


     { 


      tableRow = new TableRow(getApplicationContext()); 
      textView3= new TextView(getApplicationContext()); 
      textView3.setText(c.getString(c.getColumnIndex("fname"))); 
      textView3.setClickable(true); 

      ett1=textView3.getText().toString(); 
      //datas11=textView3.getText().toString(); 

      textView4 = new TextView(getApplicationContext()); 
      textView4.setText(c.getString(c.getColumnIndex("mname"))); 
      textView4.setClickable(true); 
      ett2=textView4.getText().toString(); 
      //datas12=textView4.getText().toString(); 

      textView5 = new TextView(getApplicationContext()); 
      textView5.setText(c.getString(c.getColumnIndex("lname"))); 
      textView5.setClickable(true); 
      ett3=textView5.getText().toString(); 
      //datas13=textView7.getText().toString(); 

      textView6 = new TextView(getApplicationContext()); 
      textView6.setText(c.getString(c.getColumnIndex("cfname"))); 
      textView6.setClickable(true); 
      ett4=textView6.getText().toString(); 

      textView7 = new TextView(getApplicationContext()); 
      textView7.setText(c.getString(c.getColumnIndex("cmname"))); 
      textView7.setClickable(true); 
      ett5=textView7.getText().toString(); 

      textView8 = new TextView(getApplicationContext()); 
      textView8.setText(c.getString(c.getColumnIndex("clname"))); 
      textView8.setClickable(true); 
      ett6=textView8.getText().toString(); 

      textView9 = new TextView(getApplicationContext()); 
      textView9.setText(c.getString(c.getColumnIndex("bday"))); 
      textView9.setClickable(true); 
      ett7=textView9.getText().toString(); 

      textView10 = new TextView(getApplicationContext()); 
      textView10.setText(c.getString(c.getColumnIndex("bmonth"))); 
      textView10.setClickable(true); 
      ett8=textView10.getText().toString(); 

      textView11 = new TextView(getApplicationContext()); 
      textView11.setText(c.getString(c.getColumnIndex("byear"))); 
      textView11.setClickable(true); 
      ett9=textView11.getText().toString(); 

      textView3.setPadding(10, 10, 10,10); 
      textView5.setPadding(10, 10, 10, 10); 
      tableRow.addView(textView3); 
      tableRow.addView(textView5); 
      tableLayout.addView(tableRow); 
      c.moveToNext(); 

      final List<String> list = new ArrayList<String>(); 
      list.add(textView3.getText().toString()); 
      list.add(textView4.getText().toString()); 
      list.add(textView5.getText().toString()); 
      list.add(textView6.getText().toString()); 
      list.add(textView7.getText().toString()); 
      list.add(textView8.getText().toString()); 
      list.add(textView9.getText().toString()); 
      list.add(textView10.getText().toString()); 
      list.add(textView11.getText().toString()); 

      textView3.setOnClickListener(new View.OnClickListener() { 



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

        Intent intent = new Intent(FullExplanationEntry.this ,SavedData.class); 
        intent.putExtra("ett1",list.get(0) + ""); 
        intent.putExtra("ett2",list.get(1) + ""); 
        intent.putExtra("ett3",list.get(2) + ""); 
        intent.putExtra("ett4",list.get(3) + ""); 
        intent.putExtra("ett5",list.get(4) + ""); 
        intent.putExtra("ett6",list.get(5) + ""); 
        intent.putExtra("ett7",list.get(6) + ""); 
        intent.putExtra("ett8",list.get(7) + ""); 
        intent.putExtra("ett9",list.get(8) + ""); 

        startActivity(intent); 



       } 
      }); 
     } 


     c.close(); 
     setContentView(tableLayout); 
      db.close(); 
    } 
+2

여기서는 "작동하지 않는다"는 의미를 설명해주십시오. – laalto

+0

나는 firstname, middlename 및 lastname에 대한 databse를 만들기위한 코드를 만들었습니다. 그것은 작동했습니다 ..하지만 내가 날짜를 추가 할 때 ... DOB .. 앱이 충돌하고 있습니다 ... 이름에 VARCHAR를 부여했습니다 ... 그리고 NUMERIC 날짜 ... 나는이 숫자가 실수일지도 모른다라고 생각한다. 그러나 정수, 텍스트를 줬다. 그러나 그것은 isalo 충돌하고있다 – roshanpeter

+2

충돌을 위해, 질문에 예외 stacktrace를 포함 해주세요. 새로운 열을 추가했다면, 테이블이 이미 존재하기 때문에'CREATE TABLE IF NOT EXISTS'는 아무 것도하지 않을 것입니다. – laalto

답변

2

CREATE TABLE IF NOT EXISTS가 이미 존재하기 때문에 테이블을 다시하지 않을 것이다. 테이블을 만든 후에 추가 한 열은 거기에 없으며 잘못된 열 이름으로 인해 SQL 구문 오류가 발생합니다.

의견을 바탕으로 제거 프로그램이 문제를 해결했습니다. 이는 이전 데이터베이스를 제거하고 모든 열을 사용하여 새 데이터베이스를 만든 때문입니다.

나중에 필요하면 SQLiteOpenHelper의 내장 스키마 버전 시스템을 사용하십시오. onCreate()은 신선한 데이터베이스를 만들고 onUpgrade()은 이전 데이터베이스 스키마 버전에서 마이그레이션하는 것이 좋습니다.

+0

감사합니다 Laalto ... 답변을 수락했습니다 ..... – roshanpeter

1

이 hgelp 경우 SQLite는의 날짜는 문자열입니다 .. 코드를 제공 할 것입니다.
ISO 형식 ('yyyy-MM-dd')으로 전달하십시오.
또한 시간을 추가 할 수 있습니다 ('YYYY-MM-DD HH : MM : SS')

관련 문제