한국어

네트워킹

온누리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 함수에 대입하여 해보세요.

조회 수 :
11123
등록일 :
2019.10.14
22:57:37 (*.214.125.21)
엮인글 :
http://webs.co.kr/index.php?document_srl=3320676&act=trackback&key=c3e
게시글 주소 :
http://webs.co.kr/index.php?document_srl=3320676
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜
67 Mysql FOREIGN KEY admin 8819   2020-02-16
 
» 간단한 Android Sqlite 예제 ( DB생성,테이블 생성, 데이터 입력, 테이터 보여주기) admin 11123   2019-10-14
https://webnautes.tistory.com/830 간단한 SQLite를 사용하는 예제 입니다. 앱을 시작하면 데이터 베이스를 생성하고 names, phones 두개의 컬럼이 있는 테이블을 생성하고 데이터를 삽입합니다. 그리고 나서 테이블에서 데이터를 ...  
65 mysql db tables 별로 데이타 사용량 확인 쿼리 admin 11510   2020-02-12
 
64 [유용][실전]Android DB 생성 및 관리 ( Cursor , Query ) 리스트뷰 admin 11882   2019-10-14
 
63 [Android] 안드로이드 - SQLiteDatabase 구현하기 admin 12623   2019-10-14
 
62 [안드로이드] SQLiteDatabase와 SQLiteOpenHelper 사용법 예제 admin 12897   2019-10-14
 
61 mysql procedure admin 17050   2017-11-16
 
60 [SQL] 테이블 안의 컬럼 값 변경, 수정, UPDATE admin 17120   2019-10-21
 
59 oracle download install 오라클 다운로드 설치 admin 17221   2018-05-29
 
58 Installation of MySQL Database Server admin 18507   2017-08-17
 
57 숫자 날짜 문자열 문자 공간 JSON MySQL 자료형 총 정리 phpMyAdmin 자료형 admin 18929   2018-03-26
 
56 Sqlite very detail easy tutorial I recommand this admin 19354   2017-09-09
 
55 mysql 로컬접속 풀고 특정 아이피 접속 허가 허락 가능 하게 설정 하는 방법 admin 20491   2017-09-05
 
54 MySQL 데이터 베이스 백업 및 복구 방법 admin 20626   2017-09-01
 
53 linux command chmod 리눅스 명령어 가장 쉽게 이해하기 설명 사용자 구룹 타인 권한 admin 20921   2017-09-05
 
52 Mysql privilege table GRANT SELECT,INSERT,UPDATE,DELETE ON db.table admin 21849   2015-04-02
 
51 SQL Delete records using subqueries admin 24076   2015-04-03
 
50 mysql 쿼리 로그 남기기 (실시간) admin 24617   2015-04-15
 
49 원격 IP로 MySQL(MariaDB)에 접속 방법 해법 설정 순서 admin 25272   2019-06-19
 
48 10gR2_sles10_install file admin 26276   2014-03-18
 
47 두테이블비교 한쪽에 없는 값 추출 mysql left right outer join 서브쿼리 값사용 admin 26286   2019-07-10
 
46 this is final answer assets sqlite Databases trouble copy External DB, check eclips admin 29920   2014-02-18
 
45 SUPER OCM 1.8club admin 31048   2012-12-18
 
44 OS에따른 Oracle 설치버전 admin 32026   2013-04-08
 
43 Oracle 10g Articles admin 32028   2012-06-24
 
42 Allowing MySQL Root Login from All IP Addresses : admin 32189   2017-08-17
 
41 SQLite Database Browser file admin 32871   2014-02-14
 
40 sqlite DB copy admin 33432   2014-02-14
 
39 Oracle Preinstallation Tasks admin 33524   2011-12-16
 
38 Android Simple Clean Good SQLite Database Tutorial 잘된 설명 admin 34187   2014-02-13