React Native Sqlite Kullanımı Ios ve Android Uyumlu Sınıf

react-nativeyoutubesqlitekendimce

2 yıl önce 14 yorum

React native kullanırken veri saklamak istiyorsanız sqlite burada devreye giriyor, eğer uygulamanızda sqlite kullanmak istiyorsanız yapmanız gereken şeyler: 

https://github.com/andpor/react-native-sqlite-storage adresinde bulunan projeyi kurmanız gerekiyor. Kurulumda yapılacaklar README.md dosyasında yazıyor.

Basitçe bahsedecek olursak npm install --save react-native-sqlite-storage diyerek projemize kuruyoruz. Eğer rnpm yüklü ise rnpm link diyerek otomatik olarak ios'a dahil ediyorsunuz.

Android için ise 

Adım 1 - NPM Install

npm install --save react-native-sqlite-storage

Adım 2 - Gradle dosyasını düzenleme

// android/settings.gradle : dosyasına

include ':react-native-sqlite-storage'
project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sqlite-storage/src/android')

Adım 3 - Setting gradle dosyasını düzenleme

// android/app/build.gradle : dosyasına
...

dependencies {
    ...
    compile project(':react-native-sqlite-storage')
}

Adım 4 - Eğer react native'in son versiyonunu kullanıyorsanız (ki kullanın) Şu dosyalara import etmeniz gerekir

// android/app/src/main/java/com/<Proje Adı>/MainApplication.java : dosyasına
...
import org.pgsqlite.SQLitePluginPackage; // import edip
...

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    ...

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
          new SQLitePluginPackage() // buraya bu kodu ekleyin
      );
    }
  };
...

NOT: İsimler ileriki versiyonlarda değişmiş olabilir. Eğer sizin dosyanız farklı ise bu konuya yorum yaparak beni uyarabilirsiniz.

Adım 5 - Kullanacağınız dosyanıza dahil etmeniz

// index.android.js : dosyanıza (isteğe bağlı)

const React = require('react-native');
const SQLite = require('react-native-sqlite-storage')
...

Buraya kadar herşey tamam ise artık gelişmiş bir yapı kullanmanın zamanı geldi :)

Benim websql, angularjs, ionic 2 (beta), react native için sqlite çalışabilecek bir projemden bahsedeyim. (aslında abartılacak bir şey değilde :D sürekli sql code yazıp amelelik yapmamak için yazdığım bir şey :))

Bu yapı bir sorguda kullanılacak işlemleri rahatlıkla yapmanızı sağlıyor. select, insert, update, delete, query adında methodları var. Bu projeyi bu adresten indirebilirsiniz ya da kısa yoldan:

npm install --save websqlite

Dokümantasyonuna bu adresten ulaşabilirsiniz. basit bir örnek verecek olursam (kullanıcıları listelemek gibi) şöyle olur index.ios.js: 

...
const SQLite = require('react-native-sqlite-storage')
const websqlite = require('websqlite');
var SqlService = new websqlite();
...
export default class LoginApp extends Component {
	constructor(props) {
		super(props);
		SqlService.init({
			id: 'user', // veritabanı ismi
			dbObject: SQLite, // veritabanı nesnesi
		})
		
		this.loadUsers();
	}

	async loadUsers() {
		SqlService.select("Users", "*").then(res => { // kullanımı dokümandaki gibi
			console.log(res); // kullanıcıları logladık
		})
	}
	...
...

Kullanımı oldukça kolay (kendimce :D) eğer kurulumda anlatmadığım bir nokta veya yanlış anlattığım bir nokta olursa beni uyarın. Bugünkü konu bu kadardı, diğer konularda görüşmek üzere, kendinize iyi bakın :)

Düzenleme: Paketi npm üzerine attığım için bağlamsal linkleri düzenledim

Yorumlar ({{totalCommentCount}})

  • Hakan

    {{commentLike22Count}} beğenme 2 yıl önce

    Herşeyi adım adım gerçekleştirdim fakat undefined is not an object hatası alıyorum.Ne yapmam gerekir ?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike23Count}} beğenme 2 yıl önce

    Merhaba Hakan, Sorunu daha detaylı bir şekilde hatanın ekran görüntüsü ile birlikte https://github.com/abdurrahmanekr/bana-istedigini-sor/issues buraya bir issue aç sana yardımcı olacağım
    Beğen Beğendin
  • Ümit

    {{commentLike50Count}} beğenme 2 yıl önce

    Merhaba.Close işlemini uygulamak gerekirmi?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike51Count}} beğenme 2 yıl önce

    Merhaba Ümit, sorunu detaylı bir şekilde açıklar mısın? Close işlemi derken ne anlatmak istedin?
    Beğen Beğendin
  • Ümit

    {{commentLike52Count}} beğenme 2 yıl önce

    Mysql de kullanılan close komutu gibi sqlite de close komutunu kullanmak gerekir mi? Yoksa uygulamayı kapattığımızda bağlantı kendiliğinden kapatılıyor ve bu yüzden close komutunu kullanmaya gerek yok mu?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike53Count}} beğenme 2 yıl önce

    WebSql için böyle bir zorunluluk yok. Sqlite üzerinde kapatma komutu var fakat o kadar önemli olmadığını düşündüğüm için eklemedim. Uygulama kapandığında veritabanı bağlantısı işletim sistemine bırakıldığından Garbage Collector bunun takibini yapıyor. Bence bunu işletim sistemine bırakmak gerekir.
    Beğen Beğendin
  • Ümit

    {{commentLike54Count}} beğenme 2 yıl önce

    Teşekkür ederim cevap için :)
    Beğen Beğendin
  • Güven

    {{commentLike70Count}} beğenme 1 yıl önce

    create-react-native ile oluşturulan app'lerde dosya sistemi böyle olmadığı için izin işlemleri nasıl oluyor acaba?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike71Count}} beğenme 1 yıl önce

    Merhaba, bildiğim kadarıyla dosya sistemi değişmedi. Eğer android ve ios dosyaları oluşmuyor diyorsanız. create-react-native-app'nin amacı zaten OS dosyalarını oluşturmadan react native uygulaması oluşturmak. Git reposunun açıklamasında da yazdığı gibi: https://github.com/react-community/create-react-native-app "Create a React Native app on any OS with no build config." Eğer android ve ios dosyalarının oluşmasını istiyorsanız react-native-cli kurmanız gerekiyor. Eski sistemdeki gibi "react-native init Proje" şeklinde.
    Beğen Beğendin
  • Gamer70

    {{commentLike72Count}} beğenme 1 yıl önce

    Merhaba veri tabanina baglanirken veri tabani kullanici adi ve sifresi giriyoruz yani yuksrda bir config dosyasi goremedim yaniliyormuyum ?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike73Count}} beğenme 1 yıl önce

    Merhaba, SQLite için bir oturum sistemine gerek yoktur. Zaten SQLite'ı local cihaz üzerinde kullandığınız için direkt okuma ve yazma yetkisine sahipsiniz. Bu yüzden bir kullanıcı adı ve şifreye ihtiyacınız yok.
    Beğen Beğendin
  • Gamer70

    {{commentLike75Count}} beğenme 1 yıl önce

    Merhaba hocam o zaman sizin yaptiginiz serverdaki bir veri tabanina baglanip veri cekmiyorsunuz.telefonda olusturuyonuz ve telefona kaydediyonuz veri tabanini dogru anlamismiyim?
    Beğen Beğendin
  • Abdurrahman Eker

    {{commentLike76Count}} beğenme 1 yıl önce

    Evet, doğru anladınız. Tamamen telefonun local veritabanında işlem yapıyoruz.
    Beğen Beğendin
  • Kodflex

    {{commentLike85Count}} beğenme 1 yıl önce

    Merhabalar; Bu sqllite uzak bir sunucu mu oluyor. ? Anladığım kadarıyla lokalde kayıt yapılıyor. Uzaktaki sunucuyla bağlantı kurup işlem yapabiliyor muyuz. ? Bir Mysqql gibi. Saygılar.
    Beğen Beğendin
  • Düşündüklerin nedir ?

    Abdurrahman Eker

    (1010 Eylül 11111001100)

  • Full Stack Developer at Detaysoft Turkey/Sivas
  • İnternette Avare Kodcu
  • github
  • linkedin
  • youtube
  • Yeni içeriklerden haberdar olmak ister misin ?