2017-07-27 120 views
1

那么我使用netbean,这是我的code.But当我运行的代码没有错误,没有数据保存在firebase.I已经做到了这一点的帮助下谷歌firebsae教程https://firebase.google.com/docs/database/admin/save-data。 那么,什么是错误的,我code.Or是否有任何其他好的方法来做到这一点如何将数据从java应用程序保存到firebase

package com.recomm.mavenrec.algorithm.firebaseConnection; 

import com.google.firebase.FirebaseApp; 
import com.google.firebase.FirebaseOptions; 
import com.google.firebase.auth.FirebaseCredentials; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 
import com.recomm.mavenrec.Entity.Book; 
import com.recomm.mavenrec.Entity.Hospital; 
import java.io.FileInputStream; 
import java.io.FileNotFoun## Heading ##dException; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 
import java.util.logging.Level; 
import java.util.logging.Logger; 


public class FirebaseConnection { 

    public void initiainzeSDK() { 
     FileInputStream serviceAccount; 
     try { 
      serviceAccount = new FileInputStream("myJson.json"); 
      FirebaseOptions options = new FirebaseOptions.Builder()      .setCredential(FirebaseCredentials.fromCertificate(serviceAccount)) 
       .setDatabaseUrl("https://adsnavigator-bc363.firebaseio.com/") 
       .build(); 

      FirebaseApp.initializeApp(options); 
     } catch (FileNotFoundException foe) { 
      System.out.println(foe.getMessage()); 
     } catch (IOException ioe) { 
      System.out.println(ioe.getMessage()); 
     } 
    } 

    public void authrnticate() { 
     DatabaseReference ref = FirebaseDatabase 
      .getInstance() 
      .getReference("restricted_access/secret_document"); 
    ref.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Object document = dataSnapshot.getValue(); 
       System.out.println(document); 
      } 

      @Override 
      public void onCancelled(DatabaseError error) { 
       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
      } 
     }); 
    } 

    public void writeTOFb() { 
     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference ref = database.getReference("rec"); 
     System.out.println(ref); 
     DatabaseReference usersRef = ref.child("abc"); 
     System.out.println(usersRef); 
     Map<String, Hospital> users = new HashMap<>(); 
     users.put("alanisawesome", new Hospital("abc", "sfsf", 1f)); 
     users.put("gracehop", new Hospital("xyz", "rde", 2f)); 
     System.out.println(users); 
     usersRef.setValue(users); 

    }} 

`

回答

0

你可能忘了更改数据库的写入规则".write": true 你可以添加这一点,并检查它的失败的错误。

usersRef.setValue(users, new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if (databaseError != null) { 
      System.out.println("Data could not be saved " + databaseError.getMessage()); 
     } else { 
      System.out.println("Data saved successfully."); 
     } 
    } 
}); 
+0

这是我的数据库规则{ “规则”:{ “.read ”: “AUTH = NULL”, “ .WRITE”: “AUTH = NULL” }} 你 –

+0

所连接的管理不需要特权读或写,但试图改变规则,以'{ “规则”:{ “.read‘:真实, ’.WRITE”:真 }} ' 弟兄 –

+0

我只是改变了规则,但仍然是同样的问题。现在我能做什么? –

0

这是因为程序在Firebase操作完成之前终止。您可以尝试添加计时器任务或线程以在程序中运行,以便应用程序不会终止。

相关问题