한국어

네트워킹

온누리070 플레이스토어 다운로드
    acrobits softphone
     온누리 070 카카오 프러스 친구추가온누리 070 카카오 프러스 친구추가친추
     카카오톡 채팅 상담 카카오톡 채팅 상담카톡
    
     라인상담
     라인으로 공유

     페북공유

   ◎위챗 : speedseoul


  
     PAYPAL
     
     PRICE
     

pixel.gif

    before pay call 0088 from app


https://webnautes.tistory.com/830



간단한 SQLite를 사용하는 예제 입니다.

앱을 시작하면 데이터 베이스를 생성하고  names, phones 두개의 컬럼이 있는 테이블을 생성하고 데이터를 삽입합니다.

그리고 나서 테이블에서 데이터를 가져와 리스트뷰에 보여주는 예제입니다..





activity_main.xml파일입니다. 리스트뷰를 화면에 보여줍니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">

   <ListView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/listView" />


</LinearLayout>




list_item.xml은 listview 한줄에 여러 개의 항목을 보여주기 위해 필요한 레이아웃입니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal"
   android:padding="10dp"
   android:paddingLeft="10dp"
   android:paddingRight="10dp" >

   <TextView
       android:id="@+id/name"
       android:layout_width="0dp"
       android:layout_weight="0.5"
       android:layout_height="wrap_content"
       android:textStyle="bold"/>


   <TextView
       android:id="@+id/phone"
       android:layout_width="0dp"
       android:layout_weight="0.5"
       android:layout_height="wrap_content"
       android:textStyle="bold" />

</LinearLayout>




MainActivity.java는 자바 프로그램 코드 입니다.


package com.tistory.webnautes.sqllite_example;


import android.app.Activity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.HashMap;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.util.Log;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;




public class MainActivity  extends Activity {


   private final String dbName = "webnautes";
   private final String tableName = "person";

   private String names[];
   {
       names = new String[]{"Cupcake", "Donut", "Eclair", "Froyo", "Gingerbread", "Honeycomb", "Ice Cream Sandwich", "Jelly Bean", "Kitkat"};
   }

   private final String phones[];
   {
       phones = new String[]{"Android 1.5", "Android 1.6", "Android 2.0", "Android 2.2", "Android 2.3", "Android  3.0", "Android  4.0", "Android  4.1", "Android  4.4"};
   }


   ArrayList<HashMap<String, String>> personList;
   ListView list;
   private static final String TAG_NAME = "name";
   private static final String TAG_PHONE ="phone";

   SQLiteDatabase sampleDB = null;
   ListAdapter adapter;


   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       list = (ListView) findViewById(R.id.listView);
       personList = new ArrayList<HashMap<String,String>>();


       try {


           sampleDB = this.openOrCreateDatabase(dbName, MODE_PRIVATE, null);

           //테이블이 존재하지 않으면 새로 생성합니다.
           sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + tableName
                   + " (name VARCHAR(20), phone VARCHAR(20) );");

           //테이블이 존재하는 경우 기존 데이터를 지우기 위해서 사용합니다.
           sampleDB.execSQL("DELETE FROM " + tableName  );

           //새로운 데이터를 테이블에 집어넣습니다..
           for (int i=0; i<names.length; i++ ) {
               sampleDB.execSQL("INSERT INTO " + tableName
                       + " (name, phone)  Values ('" + names[i] + "', '" + phones[i]+"');");
           }

           sampleDB.close();

       } catch (SQLiteException se) {
           Toast.makeText(getApplicationContext(),  se.getMessage(), Toast.LENGTH_LONG).show();
           Log.e("", se.getMessage());


       }

       showList();

   }




   protected void showList(){

       try {

           SQLiteDatabase ReadDB = this.openOrCreateDatabase(dbName, MODE_PRIVATE, null);


           //SELECT문을 사용하여 테이블에 있는 데이터를 가져옵니다..
           Cursor c = ReadDB.rawQuery("SELECT * FROM " + tableName, null);

           if (c != null) {


               if (c.moveToFirst()) {
                   do {

                       //테이블에서 두개의 컬럼값을 가져와서
                       String Name = c.getString(c.getColumnIndex("name"));
                       String Phone = c.getString(c.getColumnIndex("phone"));

                       //HashMap에 넣습니다.
                       HashMap<String,String> persons = new HashMap<String,String>();

                       persons.put(TAG_NAME,Name);
                       persons.put(TAG_PHONE,Phone);

                       //ArrayList에 추가합니다..
                       personList.add(persons);

                   } while (c.moveToNext());
               }
           }

           ReadDB.close();


           //새로운 apapter를 생성하여 데이터를 넣은 후..
           adapter = new SimpleAdapter(
                   this, personList, R.layout.list_item,
                   new String[]{TAG_NAME,TAG_PHONE},
                   new int[]{ R.id.name, R.id.phone}
           );


           //화면에 보여주기 위해 Listview에 연결합니다.
           list.setAdapter(adapter);


       } catch (SQLiteException se) {
           Toast.makeText(getApplicationContext(),  se.getMessage(), Toast.LENGTH_LONG).show();
           Log.e("",  se.getMessage());
       }

   }


}




업데이트  

2015. 11. 22

2019.  2. 12





포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 후원 또는 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구 독 하 기
후 원 하 기


  • so2019.02.12 12:24


    mainactivity.java에서
    adapter = new SimpleAdapter(
    this, personList, R.layout.list_item,
    new String[]{TAG_NAME,TAG_PHONE},
    new int[]{ R.id.name, R.id.phone}
    에서 R이 빨간색으로 오류가 뜨고


    private final String[] name = new String[]{"cupcake", "Donut", "Eclair", "Froyo",
    "Gingerbread", "Honeycomb", "Ice Cream Sandwich", "Jelly Bean", "Kitkat"};
    에서 "cupcake","Donut"....등 " .." 안의 항목이 다 빨간줄로 오류나는 데 이유가뭘까요?

    • Favicon of https://webnautes.tistory.comwebnautes2019.02.12 14:21 신고


      포스팅을 업데이트 했습니다. 다시 해보세요.

      R오류 뜨는 것은 프로젝트가 잘못 생성되서 그럴 수 있습니다.

    • so2019.02.12 15:33


      업데이트까지ㅜㅠㅠㅠ정말감사합니다ㅠㅠㅠㅠㅠㅠ sqlite위의예제처럼 사용해서 table 열항목을 두개 추가해 4개의 항목을 만든다음, 검색창기능으로 리스트의이름을 검색해서 나온 해당 항목을 클릭하면 새페이지로 넘어가 해당항목의 모든 table 내용이 화면에 뜨게하는 기능이 구현가능 할까요??... 복잡한 질문읽어주셔서감사합니다ㅠㅠ

    • so2019.02.12 15:41


      죄송합니다..한가지만 더여쭤볼게요..
      datebase 와 table 파일의 위치는 어디에 있을까요??

    • Favicon of https://webnautes.tistory.comwebnautes2019.02.12 16:57 신고


      가능합니다. sql 파일 위치는 다음 링크를 참고하세요

      https://stackoverflow.com/questions/4452538/location-of-sqlite-database-on-the-device

    • so2019.02.14 14:57


      정말너무너무감사합니다ㅜㅜㅜㅜ 정말유용해요 혹시위 코드를 이용하여 리스트 항목 눌러서넘어간 새 페이지에서 테이블의 각 행의 항목들 정보를 가져오려면 cursor를 써야할까요??ㅜㅜ

    • Favicon of https://webnautes.tistory.comwebnautes2019.02.14 16:59 신고


      인텐트(intent)를 사용하여 데이터를 전달해도 되지 않을까 싶습니다.

  • jy2019.03.18 15:02


    버튼 클릭시 리스트 뷰로 데이터를 보여주고 싶어 위 코드를 참고하여 만들었습니다.
    그런데 클릭스 테이블을 찾을 수 없다는 문구가 뜹니다ㅜㅜ 테이블은 만들어진것 같은데 왜그런 건지 모르겠습니다

  • hello2019.05.09 13:12


    그 궁금한게 있는데 이 코드를 이용해서 다른 테이블에 적용하고 싶어서 phone이라는 변수 이름을 다른 변수 이름으로 수정하였는데 그 튜플값을 찾을 수 없다고 하는데 어케 해야 다른 변수를 사용할 수 있나요? mainactivity코드와 list_item 코드를 수정하였는데 작동을 안해서요 ㅠㅠ

    • Favicon of https://webnautes.tistory.comwebnautes2019.05.09 13:16 신고


      에러메시지를 올려주세요

    • hello2019.05.09 18:26


      build시에 에러는 발생하지 않지만 앱을 실행하면

      table address has no column named address(code 1);. while compling INSERT INTO rehobot(name,addres) values('rehobot', '경기도 용인시');

      table명을 rehobot으로 바꾸고 안의 데이타들을 좀 바꾸었지만 phone을 그대로 적용하면 앱이 정상적으로 작동하는데 address로 phone의 변수를 다르게 적용하니 앱이 실행이 안됩니다 ㅠㅠ


    • hello2019.05.09 18:28


      build시엔 에러가 없으며 mainactivity에서의 phone부분을 모두 address로 수정하였고 list_item.xml파일에서 phone부분도 address로 다 수정하였습니다 그런데 변수만 바꾸었는데 왜 적용이 안되는지 궁금합니다.

    • Favicon of https://webnautes.tistory.comwebnautes2019.05.09 18:43 신고


      테이블의 컬럼하고 sql문에서 사용한 컬럼이름이 달라서 생긴문제로 보이네요..

    • hello2019.05.09 18:46


      아 그러면 혹시 컬럼의 변수를 설정 혹은 더 추가 하려면activity_main과 list_item xml파일 수정 외에 또 다른 작업이 필요한 건가요?

    • Favicon of https://webnautes.tistory.comwebnautes2019.05.09 18:48 신고


      sql에서 테이블 컬럼도 바꿔야합니다

    • Favicon of https://webnautes.tistory.comwebnautes2019.05.09 19:54 신고


      다음 세군데에 있는 name과 phone을 똑같이 다른 문자열로 바꾸어주면 동작합니다.


      테이블 생성하는 부분

      sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + tableName
      + " (name VARCHAR(20), phone VARCHAR(20) );");



      테이블에 데이터 넣는 부분

      for (int i=0; i<names.length; i++ ) {
      sampleDB.execSQL("INSERT INTO " + tableName
      + " (name, phone) Values ('" + names[i] + "', '" + phones[i]+"');");
      }




      질의 결과에서 컬럼값 가져오는 부분

      String Name = c.getString(c.getColumnIndex("name"));
      String Phone = c.getString(c.getColumnIndex("phone"));

  • do2019.07.07 05:33


    안녕하세요 항상 좋은 자료들 찾아보고있습니다.
    질문이 있는데요
    DB SELECT에서 조건으로 Cursor c = ReadDB.rawQuery("SELECT * FROM method where name = ?", new String[]{"%" + strSearch + "%"});
    이러하게 부분적으로 조건을 검색하려고 하는데 구문오류라고 그러는데 이유를 알 수 있을까요? (결과가 null 값이기도 합니다.)
    strSearch는 검색하는 EditText에서 가져온 문자열 입니다.

    • Favicon of https://webnautes.tistory.comwebnautes2019.07.07 08:28 신고


      문자열을 조합한 결과를 따로 변수에 넣어서 제대로 조합되었는지 로그캣에 출력해본 후

      rawQuery 함수에 대입하여 해보세요.

조회 수 :
10629
등록일 :
2019.10.14
22:57:37 (*.214.125.21)
엮인글 :
http://webs.co.kr/index.php?document_srl=3320676&act=trackback&key=480
게시글 주소 :
http://webs.co.kr/index.php?document_srl=3320676
List of Articles
번호 제목 글쓴이 날짜 조회 수
67 Mysql FOREIGN KEY admin 2020-02-16 8396
66 mysql db tables 별로 데이타 사용량 확인 쿼리 admin 2020-02-12 11018
65 [SQL] 테이블 안의 컬럼 값 변경, 수정, UPDATE admin 2019-10-21 16602
64 [Android] 안드로이드 - SQLiteDatabase 구현하기 admin 2019-10-14 12191
63 [유용][실전]Android DB 생성 및 관리 ( Cursor , Query ) 리스트뷰 admin 2019-10-14 11431
» 간단한 Android Sqlite 예제 ( DB생성,테이블 생성, 데이터 입력, 테이터 보여주기) admin 2019-10-14 10629
61 [안드로이드] SQLiteDatabase와 SQLiteOpenHelper 사용법 예제 admin 2019-10-14 12446
60 두테이블비교 한쪽에 없는 값 추출 mysql left right outer join 서브쿼리 값사용 admin 2019-07-10 25693
59 원격 IP로 MySQL(MariaDB)에 접속 방법 해법 설정 순서 admin 2019-06-19 24745
58 oracle download install 오라클 다운로드 설치 admin 2018-05-29 16738
57 숫자 날짜 문자열 문자 공간 JSON MySQL 자료형 총 정리 phpMyAdmin 자료형 admin 2018-03-26 18450
56 mysql procedure admin 2017-11-16 16523
55 Sqlite very detail easy tutorial I recommand this admin 2017-09-09 18847
54 mysql 로컬접속 풀고 특정 아이피 접속 허가 허락 가능 하게 설정 하는 방법 admin 2017-09-05 19999
53 linux command chmod 리눅스 명령어 가장 쉽게 이해하기 설명 사용자 구룹 타인 권한 admin 2017-09-05 20426
52 mariadb CREATE USER CREATE USER statement creates new MariaDB accounts. admin 2017-09-01 62835
51 MySQL 데이터 베이스 백업 및 복구 방법 admin 2017-09-01 20132
50 Allowing MySQL Root Login from All IP Addresses : admin 2017-08-17 31657
49 Installation of MySQL Database Server admin 2017-08-17 17967
48 mysql 쿼리 로그 남기기 (실시간) admin 2015-04-15 24134
47 SQL Delete records using subqueries admin 2015-04-03 23591
46 Mysql privilege table GRANT SELECT,INSERT,UPDATE,DELETE ON db.table admin 2015-04-02 21360
45 안드로이드 SQLite 속도 향상! insert Transaction admin 2014-04-07 41390
44 MySQL에 원격 접속 허용 여러가지 아이피 아이피대역으로 admin 2014-04-02 124777
43 10gR2_sles10_install file admin 2014-03-18 25765
42 this is final answer assets sqlite Databases trouble copy External DB, check eclips admin 2014-02-18 29432
41 Browse SQLite data on the Android emulator admin 2014-02-15 34789
40 SQLite Database Browser file admin 2014-02-14 32360
39 SQLite Databases using External DB admin 2014-02-14 35783
38 sqlite DB copy admin 2014-02-14 32893