Introduction to Realm Database for Android #2 (Realm write operations)

이봐 요, 사람들은 마지막 비디오에서 우리가 영역 데이터베이스에 대해 이야기하고 어떻게 개발자, 특히 모바일 개발자에게 도움이됩니다 나는 안드로이드 개발을 전문으로하고 매일 Realm을 사용합니다

이 비디오에서 우리가 얼마나 환상적인 Realm인지 알기 위해이 튜토리얼을 진행합니다 응용 프로그램에 Realm을 통합하는 방법에 대해 이야기 할 것입니다 어떻게 데이터베이스 디자인을 빌드하고 렐름은 보통 평범한 오래된 자바를 사용합니다 데이터베이스에 대한 객체 설계 그래서 여기에 두 개의 클래스가 있습니다 RealmModelExample RealmModelExample의 exampleApplication은 데이터베이스 모델을 갖게 될 것입니다

그리고 우리의 응용 프로그램에서 예제 응용 프로그램을 사용하는 것이 좋습니다 우리 영역 트랜잭션을 사용합니다

그래서 여기에 우리는 우리의 영역을 건설하기 위해 계속 될 것입니다 모델 클래스 그래서 우리는 우리의 실제 모델 예제가 미안해 물론 RealmModelExample을 가지고 있고 exampleApplication을 가지고 있습니다 Realm에서 바로 그렇습니다 모델 예제 우리는 간단한 java POJO 클래스를 생성 할 것입니다 POJO 용의 낡은 Java 오브젝트이므로, 이름을 가지는 클래스를 구축하려고합니다

나이와 getter와 setter를 얻고, 설정한다 그래서 여기에 우리는 간다 그리고 이것은 같다 다른 모든 Java 클래스는 이제 우리가해야 할 일을 실제 모델로 만듭니다 RealmObject를 확장하십시오

그래서 당신이 이것을 지켜 보았다면, 반드시 가지고 있어야합니다 Java에 익숙해 져서 키워드를 확장하므로 Realm 객체를 확장하고 내가 지금 할 일은 생성자를 추가하는 것입니다 getter 및 setter를 사용할 필요가 없도록 매번 우리는 생성자를 호출하여 하지만 빨리 그렇게 하죠 그렇게하면 수업 준비가 완료되고 렘 데이터베이스가 준비가됩니다 이것은 다른 자바 단순 자바 클래스와 비슷합니다

Realm 객체를 확장한다는 사실을 제외하고 지금 당장 우리는 넘어갈 것입니다 이전 예제에서와 마찬가지로 예제 애플리케이션으로 안드로이드 응용 프로그램을 사용하려고 계획 중입니다 안드로이드를 모방하고 싶습니다 여기서는 응용 프로그램을 사용하고 AppcompatActivity를 사용하지 말고 응용 프로그램을 확장 할 것입니다 활동은 내 혀를 비틀므로 응용 프로그램을 확장하려고합니다

바로 끝났습니다 만들기 () 여기에서 내가하고있는 일은 나 대신에 전체 활동을 만들고 XML을 디자인합니다 하나는 할 수 있도록이 응용 프로그램 클래스에서 영역을 초기화 할 수도 있습니다 문맥 '이것'은 imediate 문맥을 이야기하므로 이제 우리는 렐름과 다음은 Realm의 인스턴스를 얻는 것입니다 그래서 우리가하는 일은 Realm입니다

getdefaultinstance () 쿼리를 시작하기 전에 그렇게해야하므로 사용할 것입니다 쿼리를 수행하기 전에 또는 현재 데이터베이스를 쿼리하기위한 Realm 변수 트랜잭션 수행하기 렐류 트랜잭션 쓰기 연산 우리가 원하기 때문에 do는 쓰기 연산이고, 이제 우리는 그 연산을 트랜잭션 내부에 트랜잭션이 래핑되므로 realmbegintransaction () realmcommittransaction ()은 이제 무엇이든 할 것입니다 이 둘 사이에 그리고 당신이 결심하고 싶지 않다면 그것을 취소 할 수 있습니다

좋습니다 첫 번째 예제부터 시작하여 먼저 새로운 영역을 만듭니다 Realmcreate () 객체 메소드를 사용하는 객체 그 미안 인스턴스를 생성하고 새 개체를 추가합니다 영역 혀가 거기에서 거의 뒤 틀 렸기 때문에 이제는 인수는 생성 될 객체의 클래스입니다 그게 바로 우리가 설정할 수없는 객체 생성 메소드의 인수입니다 우리의 나이와 이름 그리고 일단 우리가 그 일을 끝내면 커밋 안에 있습니다 거래와 시작 거래는 모두 데이터베이스에 삽입됩니다

내 친구는 새로운 값을 영역 데이터베이스에 삽입하는 간단한 방법입니다 이보다 더 많은 것은 그것의 것입니다 그리고 나는 당신에 대해서 모른다 그러나 나는 정말로 wowed 그리고 처음에 나는 그것을 보았다

그것은 정말로 흥미 있었다 그러나 나는 이것을 예 하나 또는 방법 하나 다른 방법을 즉시 보여 드리겠습니다 영역 데이터베이스에 값을 삽입하는 두 번째 방법은 먼저 객체 인스턴스를 만든 다음 copyToRealm () 메서드를 사용하여 그래서 우리는 생성자를 사용하여 이름과 그 이유는 내가 생성자를 사용해야했던 이유 였고 이후에는 RealmcopyToRealm ()하지만 트랜잭션 내에서 그렇게 할 것입니다 먼저 객체의 인스턴스를 생성 할 수 있습니다

트랜잭션 외부이지만 우리는 사용해야하는 영역 데이터베이스에 복사하려고합니다 realmcopyToRealm () 그래서 realmcopyToRealm ()을 수행하고 내부적으로 인수는 사용자를 넣은 다음 트랜잭션을 커밋합니다 그것에 대해 Realm은 하나의 생성자만큼 많은 생성자를 지원합니다

그들 중 하나는 공개 된 인자없는 생성자이거나 코드 1에서 볼 수있다 그들 중 누구도 어떤 논쟁도해서는 안되기 때문에 당신이 원하는 경우가있을 수 있습니다 한 번에 하나 이상의 개체에 있으므로 권장되는 접근 방식은 다음과 같습니다 인서트를 사용하거나 삽입하거나 업데이트하십시오 나중에 얘기 하겠지만, 지금은 그냥 insert ()를 사용하려고합니다

우리가 할 일은 우리 영역의 두 객체를 생성하는 것입니다 모델 예제 클래스 그래서 첫 번째 객체는 가능한 한 James라는 이름을 갖습니다 22 세가되면 다음 대상은 찰스와 13 세라고 말할 수 있습니다 서로 다른 두 개의 트랜잭션을 생성하는 대신 두 개의 객체가 생성되었습니다 우리는 단지이 목록을 삽입하고 모든 것이 진행되고있는 것입니다

우리 데이터베이스에 삽입 될 것입니다 이전에 삽입 한 내용은 트랜잭션을 삽입하고 그래서 지금 내가 할 일은 우리의 영역을 수행하는 것입니다 begintransaction () 그런 다음 realminsert ()를 호출하고 insert에 사용자 사용자는 가지고있는 다른 어떤 영역 데이터베이스에도 이것을 사용할 수 있습니다 아마도 당신은 이름, 나이, 성별을 가질 수있는 변수가 두 개 더 많을 것입니다

주소, 그리고 이것은 매우 편리한 방법입니다 그래서 저는 Realm에 대한 간단한 소개와 그것이 어떻게 작동하는지 믿습니다 여기에서 우리는해야 할 일 목록을 만들어서 거기에있는 것을 볼 수 있습니다 여기에 두 개의 생성자가 있는데, 여러분이 생성자를 사용하려고한다면 앞서 언급했듯이 인수가없는 사람이라면 오류가 발생하지 않을 것입니다 이 비디오와 다가오는 비디오에서 우리는 할 일 목록을 만들 것입니다 너희들 모두 최선을 기원한다

Android Jetpack: Room

[로켓 블래스트 끄기] FLORINA MUNTENESCU : Google I / O 2017에서 우리는 방으로의 문 열어, 끈기 SQ Lite를 통해 추상화 레이어를 제공하는 라이브러리 Room은 버전 2

0에 도달했으며 Jetpack의 일부입니다 신고 한 버그를 수정하고 일부 기능을 추가했습니다 너는 물었다 방의 주요 구성 요소를 살펴 보겠습니다 지원되는 쿼리를 확인하고, 마이그레이션 구현 방법 및 테스트 방법 데이터베이스 작업

사용자 테이블을 원한다고 가정 해 보겠습니다 너는 그 테이블의 모든 줄을 원해 사용자 클래스의 인스턴스가됩니다 해당 실체로 수업에 주석을 답니다 테이블 이름을 정의하지 않은 경우 클래스 이름을 사용하고 싶다

tableName으로 필수 기본 키를 설정하고, 및 선택적 열 정보 그러나 열의 이름을 변경하려는 경우에만 가능합니다 그렇지 않으면 필드 이름이 사용됩니다 그리고 그게 다야 방이 사용자 테이블 작성을 담당합니다

너를 위해서 이것이 엔티티가 완료되는 방법입니다 그러나 데이터베이스의 데이터에 액세스하는 방법이 필요합니다 간단히 말해 데이터 액세스 개체 인 DAO를 사용합니다 보다 정확하게 인터페이스를 생성하십시오

@Dao 주석을 달아주세요 이 인터페이스에서 모든 메소드 선언 데이터베이스 작업에 필요한 해당 SQL 쿼리로 주석을 달기 방에서 이러한 방법을 구현합니다 지원되는 쿼리는 삽입, 업데이트, 삭제, 쿼리, 및 rawquery rawquery를 제외한 모든 항목을 검사합니다

컴파일 타임에, 당신이 잘못된 쿼리를 작성하면 즉시 확인할 수 있습니다 엔티티와 DAO를 하나로 묶는 클래스 방 데이터베이스입니다 방 데이터베이스를 확장하는 추가 클래스를 만듭니다 주석 달기 엔티티와 해당 DAO를 선언하십시오

쿼리를 자세히 살펴 보겠습니다 쿼리 및 rawquery의 반환 유형 전체 엔티티 일 수도 있지만 필드의 서브 세트 일 수도 있습니다 구아바 또는 옵션으로 작업하는 경우 Java 유틸리티 패키지에서 리턴 유형으로 사용하십시오 즉, 값이없는 경우 귀하의 질의를 만족 시키려면 귀하의 질의 Optionalempty 또는 Optional

absent를 반환합니다 어떤 옵션을 선택 하느냐에 따라 다릅니다 이 모든 쿼리는 동기식입니다 동일한 스레드에서 실행됨을 의미합니다 당신이 그 (것)들을에서 방아쇠를 당기는 당신

방은 오류를 던져 모범 사례를 따르도록 보장합니다 주 스레드에서 쿼리를 실행하는 경우 따라서 Android에서 스레드를 처리하는 기본 방법을 사용하십시오 그리고 당신이 메인 스레드에서 벗어 났는지 확인하십시오 비동기 쿼리도 지원하는 방 LiveData 또는 RXJava로 작업 할 때 게다가 LiveData를 반환하는 쿼리, 또는 [? flowable,?]는 관찰 가능한 질의이고, 매번 알림을 받음을 의미합니다

테이블의 데이터 또는 테이블 업데이트 데이터베이스 스키마를 변경할 때마다 열이나 표를 추가하거나 이름을 변경했기 때문에, 당신은 그 변화를 다루는 방법을 데이터베이스에 알릴 필요가있다 데이터베이스 클래스에서이를 수행하려면 먼저 데이터베이스 버전을 업데이트해야합니다 둘째, 마이그레이션 클래스를 구현합니다 이전 스키마에서 마이그레이션을 처리하는 방법을 정의하는 새로운 것에 그런 다음 세 번째로 해당 마이그레이션 클래스를 추가합니다

데이터베이스 필터의 매개 변수로 사용합니다 마이그레이션을 트리거 한 후 룸 마이그레이션을 확실히하기 위해 스키마의 유효성을 검사합니다 올바르게했다 마이그레이션을 처리하지 않으려면, 데이터베이스 데이터를 보존 할 필요가 없으며, fallbacktodestructivemigrations를 호출하십시오 데이터베이스를 구축 할 때

파괴적인 데이터베이스 재현 on 특정 버전에서만 호출 출석 정지 그리고 해당 버전의 번호를 제공하십시오 따라서 엔티티, DAO, 데이터베이스 및 마이그레이션이 있습니다 어떻게 테스트합니까? DAO를 테스트하려면 Android JUnit을 구현해야합니다 in-memory 데이터베이스를 만드는 테스트

메모리 내 데이터베이스는 데이터를 보유합니다 그 과정이 살아있는 동안에 만, 이는 모든 테스트 후에 데이터베이스가 파괴된다는 것을 의미합니다 비동기 쿼리를 테스트하려면 instanttaskexecutorrule을 사용하십시오 각 작업을 동 기적으로 실행합니다 앱의 구현에서 결국 다른 클래스의 DAO를 참조합니다

이러한 클래스를 단위 테스트하려면 DAO를 조롱하십시오 또는 가짜 버전을 구현하십시오 여기에 또 다른 팁이 있습니다 에스프레소 테스트를 수행하기 위해 비동기 쿼리를 사용하는 코드, 계수 법을 확장하다 작업을 시작하고 마칠 때 작업을 계산합니다 마지막으로 마이그레이션을 테스트하는 것을 잊지 마십시오

먼저 데이터베이스 스키마를 탐색하고, 다른 유용한 테스트 규칙 인 마이그레이션 테스트를 사용하십시오 이 클래스를 사용하면 이전 버전의 데이터베이스를 만들 수 있습니다 각 마이그레이션을 실행하고 유효성을 검사하십시오 당신이해야 할 일은 데이터가 이전 버전에 삽입했습니다 이전 후에도 존재합니다

승인 그래서 이것을 요약 해 봅시다 상용구가 적은 코드 컴파일 타임 검사 된 쿼리 마이그레이션을 쉽게 구현할 수 있습니다

높은 수준의 테스트 용이 그리고 데이터베이스 유지 확인 주 스레드에서 멀리 떨어져 일하십시오 모든 Room의 품질은 데이터베이스로 작업하는 것이 더 쉽고 즐겁습니다 당신은 더 나은 애플 리케이션을 제공합니다 [로켓 발사 끄기]

Android Tutorial (Kotlin) – 31 – Read Delete and update SQlite Database Records

안녕 모두, 이 CodeAndroid에서 인 Vignesh입니다 지난 튜토리얼에서 우리는 SQLite 데이터베이스를 만들었습니다 우리는 삽입했다 이 비디오에서 볼 수 있습니다, 어떻게 레코드를 읽고, 삭제하고 업데이트합니다 DB를 (데이터베이스)에서 있는 LinearLayout 추가 삽입 양식의 레이아웃 아래 작업을 할 우리는 3 버튼이 필요 그래서 3로 "weightSum"로 설정 "match_parent"로 폭의 버튼을 추가 높이 "wrap_content"로 "1"로 가중치를 할당 와 같은 ID 설정 "btn_read" "읽기"로 설정 텍스트 키보드의 코드를 눌러 "CTRL + D"를 선택 ID를 변경하는 것 "btn_update" 그리고 "업데이트"와 같은 텍스트 ID를 변경하는 것 "btn_update" 및 "삭제"와 같은 텍스트입니다

우리는있는 LinearLayout에 대한 3로 "weightSum"가 내부 버튼 1로 가중치가있는 그래서 모든 버튼은 동일한 폭을 얻을 것이다 결과를 표시합니다 있는 ScrollView를 추가 "match_parent"로 "match_parent"및 높이와 폭 제어 버튼 레이아웃에서 유지 텍스트 뷰 내부 와 "tvResult"로 지정 개방 데이터베이스 핸들러 파일 함수를 작성되는 readData 이는 "사용자"개체의 MutableList를 반환합니다 MutableList를 레이팅하고 목록을 반환 우리는 ArrayList를 사용하여 목록을 초기화 할 필요가 여기에 우리는 DB의 데이터 (데이터베이스)를 읽으려고하고있다 그래서 reableDatabase을 받고 우리가 사용하는 데 필요한 모든 데이터를 얻을 수 있습니다 쿼리로 "이 SELECT * FROM tablename" 우리는 rawQuery를 사용하여 쿼리를 실행하는 경우 우리는 커서 객체를 얻을 것이다 이것은 DB에서 읽은 모든 데이터의를해야합니다 우리는 () 커서 및 데이터베이스 사용하여 주변을 닫아야합니다 그 사이에, 우리는 커서에서 모든 데이터의 읽기해야합니다 moveToFirst ()가 반환합니다 "true"로 커서가 null이 아니고이어야 하나 개의 값이있는 경우

에서는 dowhile 루프를 사용하여 내부에서 우리는 값을 읽을 필요가있다 내부 루프는 사용자 객체를 생성 우리는 빈 생성자가 없습니다 그래서를 작성 우리는 1 열로 ID를 가지고 그러나 지수는 0에서 시작됩니다 그래서 ID를 0으로 인덱스를 제공 문자열을 변환하는 단계) (toInt를 사용하여 정수로 유사 이름과 나이를 설정 인덱스 1과 2에서

우리는 적절한 인덱스를 모르는 경우 우리는 방법을 사용하여 인덱스를 얻을 수 있습니다 columnName를 전달하여 getColumnIndex 이 방법으로 인덱스를 교체 추가 사용하여 목록에 사용자 개체를 추가합니다 () 열린 MainActivitykt btn_read에 대한 OnClickListener를 설정 우리가 DatabaseHandler의 객체가 필요)되어, readData를 (호출 그래서 최상위 수준이 이동 ()를 호출되어, readData 핸들러 객체를 사용 빈 첫째로 결과 텍스트를 설정

이제 루프를 사용하여 데이터를 루핑 및 tvResult 텍스트 뷰에 객체를 추가 루프에서는 0을 반복 할 필요가 (크기 -1) 의 응용 프로그램을 실행하자 우리는 텍스트 뷰에 데이터를 얻고있다 사용자 속성 사이에 공백을 추가 함수를 생성 deleteDate writableDatabase를 가져오고 DB 연결을 닫는 우리가 호출 할 필요가 기록을 삭제하려면 연결 개체에 () 삭제 여기에 우리는 3 개 개의 매개 변수를 전달해야 TABLENAME, whereclass 및 값 "COL_ID"1 등으로 행을 삭제 우리는 여러 레코드를 삭제하려면 우리는) (arrayOf 내부의 모든 ID의의를 통과해야 )합니다 (중복되는 readData , 반환 형식 및 제거 목록 또한 writableDatabase를 얻을 수 이 메서드를 호출에, 우리는 1 세를 증가거야 그래서 우리는 모든 데이터를 읽을 필요, 대신의 목록에 추가 우리는 나이를 업데이트해야 db

update () 우리는 4 개 매개 변수를 전달해야하는 내부 TABLENAME, contentValues, whereClass 가치 [] 나이와 contentValues를 작성 여기에 이력서를 전달합니다 여기에 내가 ID와 이름과 일치하고있다 ID와 이름 값을 전달합니다 btn_update에 대한 OnClickListener를 설정 및 () 때문에 updateData를 호출 또한 프로그래밍 btn_read 버튼을 클릭 마찬가지로 btn_delete에 대한 OnClickListener를 설정 등) (deleteData를 호출 또한 프로그래밍 btn_read 버튼을 클릭 의 코드를 실행하자

새 행을 삽입 클릭 "읽기" 결과는 데이터를 받고있다 일어나고 업데이트 아무것도 클릭 미안 해요, 난 값을 증가하는 것을 잊었다 의 코드를 실행하자 당신은 업데이트의 클릭에 볼 수 있습니다 모든 기록의 나이가 1 씩 증가 삭제의 onclick을 1과 ID가 기록 제거 우리가 통과하는 데 필요한 모든 기록을 삭제하려면 whereClass 같은 널 및 널 값 [] 의 코드를 실행하자 삭제 버튼의 클릭에 모든 레코드가 제거됩니다 클릭 확인 "읽기" 아무것도 일어나고 모든 기록은 DB에서 제거되기 때문에 즉,이 튜토리얼들에 대한 모든입니다 이 동영상이 마음 엄지 손가락을주십시오 당신이 의심이있는 경우, 코멘트 섹션에 넣어주세요, 나는 그것을 대답하려고합니다 당신은에 어떤 튜토리얼이 필요 또한이 "안드로이드" 내가 코멘트 섹션에 알려 나는 그렇게하려고합니다 너가 좋아하길 바래 나는 나의 다음 비디오에서 당신을 볼 것이다 좋은 하루 되세요"

Android Tutorial (Kotlin) – 30 – SQLite Database Creation and Insertion

안녕 모두, 이 CodeAndroid에서 인 Vignesh입니다 이 비디오에 대해 볼 수 있습니다 SQLite 데이터베이스 만들기 및 삽입 우리는 거대한 데이터를 저장하려면 우리는 어떤 검색을 할 필요가 또는 우리는 SQLite 데이터베이스를 사용할 필요가 단락 안드로이드는 기본적으로 SQLite 데이터베이스를 지원합니다 이것을 사용하기 위해 우리는 다른 라이브러리를 추가 할 필요가 없습니다 이를 증명하기 위해, 나는 새로운 응용 프로그램을 작성하고 즉 SqliteExample 기본 구성 이 예에서, 나는에 이름과 나이를 저장하기 위하여려고하고있다 SQLite 데이터베이스 열기 "activity_mainxml" 있는 LinearLayout에 대한 루트 레이아웃으로 변경 수직으로 방향을 추가 루트 레이아웃 안에 뷰를 제거 또 하나의 LinearLayout 만들기 내부 "wrap_content"로 "match_parent"및 높이와 폭 이름에 대한 글고 추가 마진과 패딩 10dp와 "etvName"로 ID를 할당 글고 치기를 복제 코드 및 보도를 선택하여 키보드에서 CTRL + d를 LinearLayout을 수직 방향으로 추가 etvAge으로서 제 2의 EditText ID를 변경 나이는 숫자 여야합니다 그래서 숫자로 inputType 설정 , A 버튼을 추가 이것의 클릭에 있도록, 우리는 데이터베이스에 입력 된 데이터를 삽입 할 수 있습니다 설정 마진과 패딩 10dp "btn_insert"등의 삽입으로 텍스트와 할당 ID 새로운 코 틀린 파일 만들기 사용자 개체의 구조를 정의하는 클래스 사용자 ID, 이름과 나이 속성을 추가 매개 변수와 같은 이름을 가진 생성자와 시대를 만들 우리는 단일 라인 자체에서 사용자 개체를 만들 수 있도록 속성 값과 같은 파라미터를 설정할 데이터베이스 작업을 처리하기 위해, 우리는 핸들러 클래스가 필요 그래서 코 틀린 파일을 만듭니다 우리는 같은 몇 가지 값이 필요합니다 데이터베이스 이름, 테이블 이름, 열 이름 등 이들 변수를 작성

파일 이름과 동일 핸들러 클래스 만들기 파라미터로서 컨텍스트 그리고, 그것은 SQLiteOpenHelper 클래스를 확장 우리는 4 개 매개 변수를 전달해야하는 내부 문맥, 데이터베이스 이름, CursorFactory 및 데이터베이스 버전 우리는 CursorFactory를 사용하지 않을 그래서 널 여기 전달합니다 1로 버전을주기 우리는 ()에서 onCreate를 구현해야 및 기본 클래스에서 onUpgrade () 이에서 onCreate ()가 실행됩니다 장치는 데이터베이스를 포함하지 않는 경우 그래서 우리는 여기에 필요한 테이블을 작성해야 여기에 나는 필드와 ID, 이름, 나이 테이블을 만드는 오전 우리가에는 ExecSQL를 사용할 필요가 쿼리를 실행하기 위해 () 우리는 쿼리 문자열을 전달해야 내부 onUpgrade ()가 실행되며, 우리는 데이터베이스의 이전 버전이있는 경우 당신은 oldVersion 및 CurrentVersion을 얻을 것이다 이 방법 자체 이 사용하는 우리는 그에 따라 테이블 구조를 업그레이드해야 함수 insertData () 사용자 개체를 삽입 할 만들기 의 SQLiteDatabase 객체의 두 가지 유형이있다가 있습니다 있습니다, 1ReadableDatabase 2WritableDatabase 여기에서 우리는 데이터베이스에 데이터를 쓰기 위하여려고하고있다 그래서 WritableDatabse를 얻을 수 데이터베이스에 삽입하려면 우리는 ConventValues ​​필요 그래서, ConventValues를 만들 우리는 우리의 가치를 둘 필요가 내부 cv

put "COL_NAME"username 저장해야합니다 cvput "COL_AGE"userage 저장해야합니다 이제 우리는이 ConventValues을 삽입해야 dbinsert () 우리는 3 개 개의 매개 변수를 전달해야 내부 TABLE_NAME, 널 (null) 및 ConventValues 두 번째 매개 변수는 문자열입니다 우리는 여기서 어떤 열 이름을 통과해야 그래야 "NULL"해당 컬럼에 저장됩니다 우리는 어떤 널 열 필요가 없습니다 그래서 우리는 두 번째 매개 변수로 null을 전달하는 이 삽입 () ROWID를 반환합니다 결과가 -1 다음 일부 오류가 발생한다 그래서 토스트를 보여주는 "실패"로 그렇지 않으면 "성공"으로 토스트를 보여주는 열기 "MainActivity

kt" "btn_insert"을위한 온 클릭 리스너를 설정 이름과 나이 길이> 0 인 경우 우리는 데이터베이스에 데이터를 삽입해야 그렇지 않으면 오류 토스트를 보여주는 그렇지 않으면 오류 토스트를 보여주는 생성자 내부에 입력 된 값을 전달하여 및 "사용자"라는 변수로 저장 헬퍼 클래스의 객체를 생성 사용하여 우리가 초기에 생성이 호출 insertData () 의 응용 프로그램을 실행하자 데이터를 입력 우리가 "성공"으로 축배를 얻고있다 "삽입"버튼을 클릭 어떤 데이터가 성공적으로 삽입 의미 다음 튜토리얼에서 검색하는 방법을 볼 수 있습니다 업데이트 및 데이터베이스에서 레코드를 삭제 즉,이 튜토리얼들에 대한 모든입니다 당신이 비디오를 좋아하는 경우에, 엄지 손가락주세요 당신이 의심이있는 경우, 주석 섹션에 넣어주십시오 나는 그것을 대답하려고합니다 너가 좋아하길 바래 나는 나의 다음 비디오에서 당신을 볼 것이다 좋은 하루 되세요"