2016-01-20 80 views
0

美好的一天伙伴程序员,我写了一个小型的Android应用程序来练习SQLite数据库系统。该应用程序基本上从用户接收数据并将其保存在创建的表中。但我想能够从其他活动访问此SQLite表。 ive尝试了我在这个网站上看到的其他解决方案,但它没有与我的代码工作。以下是我的代码和界面。感谢这么多人,这会帮助我很多。谢谢。将各种活动链接到一个SQLite数据库

应用程序UI

enter image description here

这是创建表

db = openOrCreateDatabase("MyDatabase", Context.MODE_PRIVATE, null); 
db.execSQL("CREATE TABLE IF NOT EXISTS database(name VARCHAR,age VARCHAR,gender VARCHAR,email VARCHAR,state VARCHAR,marital VARCHAR);"); 

这对于插入到表

db.execSQL("INSERT INTO database VALUES('" + Name.getText() 
      + "','" + Age.getText() + "','" + G + "','" 
      + Email.getText() + "','" + State.getText() + "','" 
      + MaritalS.getSelectedItem().toString() + "');"); 

皮斯帮助。非常感谢

+1

*香港专业教育学院尝试过其他的解决方案* - >请它们包含在你的问题。 – 2Dee

+0

你的数据库访问代码在哪里? –

+2

为什么你不使用你的数据库类作为单身人士。然后,您可以从任何您想要的活动访问表格! – zIronManBox

回答

0

实际上,我们通常会将数据库相关的代码放到一个辅助类中,我们可以在活动,片段和其他想要使用它的类中将它用作util方法。因此,您只需创建DBHelper类并放置你的方法与其中的数据库相关。

+0

请您知道任何书籍或视频教程dat有效和全面地教SQLite吗? bcos我想要知道这个 –

+0

@ uyioriaghan,如果你已经学习了其他数据库,比如mysql,你可以认为它们在大多数领域是一样的,那里有一个[training](http://www.tutorialspoint.com/ sqlite /)关于'Sqlite',并且[android有关如何在android中使用sqlite的培训](http://developer.android.com/intl/es/guide/topics/data/data-storage.html#db ),我认为这会对你有所帮助。 – starkshang

0

在单独的文件中创建数据库类现在在该类中创建一个公共函数,该对象作为要插入数据库的参数 现在在您想要使用sqlite的每个活动中创建一个数据库对象类并调用您创建的传递对象插入

+0

请你知道任何书或视频教程dat有效和全面地教SQLite吗? bcos我想要知道这件事 –

0

此插入功能是我们使用的实用程序文件:

public class DataBaseConnector { 

    private static SQLiteDatabase db; 

    private static DataBaseConnector instance; 

    public synchronized static DataBaseConnector getInstance() { 
    if (instance == null) { 
     instance = new DataBaseConnector(); 
    } 
    return instance; 
    } 

    private DataBaseConnector() { 

    } 

/** 
* Send our query, return our Cursor of results, play with it. 
* 
* @param query 
* @return 
*/ 
public static Cursor query(String query) { 
    if (query != null) { 
     openDB(); 

     while (db.isDbLockedByCurrentThread()) { 
      // db in use, keep looping 
     } 

     Log.d("Query", query); 

     return db.rawQuery(query, null); 
    } else { 
     return null; 
    } 
} 

public static Cursor query(String query, String[] args) { 
    openDB(); 

    while (db.isDbLockedByCurrentThread()) { 
     // db in use, keep looping 
    } 
    Log.d("Query & Args", query + "; " + Arrays.toString(args)); 
    return db.rawQuery(query, args); 
} 

public static void execSQL(String sql) { 
    if (sql != null) { 
     openDB(); 

     while (db.isDbLockedByCurrentThread()) { 
      // db in use, keep looping 
     } 
     Log.d("ExecSQL", sql); 
     db.execSQL(sql); 
    } 
} 

public static boolean canOpenDB() { 
    if (db == null) { 
     try { 
      db = SQLiteDatabase.openDatabase(GlobalVars.getDBPath(), null, SQLiteDatabase.OPEN_READWRITE); 
      if (db.isOpen()) { 
       return true; 
      } else { 
       return false; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return false; 
     } 
    } else { 
     return true; 
    } 
} 

private static void openDB() { 
    if (db == null) { 
     db = SQLiteDatabase.openDatabase(GlobalVars.getDBPath(), null, SQLiteDatabase.OPEN_READWRITE); 
    } 
} 

public void CloseIt() { 
    if (db != null) { 
     while (db.isDbLockedByCurrentThread()) { 
      // db in use, keep looping 
     } 
     if (db != null) { 
      db.close(); 
     } 
     db = null; 
    } 
} 

public static void StaticCloseIt() { 
    if (db != null) { 
     while (db.isDbLockedByCurrentThread()) { 
      // db in use, keep looping 
     } 
     if (db != null) { 
      db.close(); 
     } 
     db = null; 
    } 
} 

public static boolean isDatabaseIntegrityOk() { 
    if (db != null) { 
     return db.isDatabaseIntegrityOk(); 
    } 
    return false; 
} 

public static void beginTransaction() { 
    if (db != null) { 
     db.beginTransaction(); 
    } 
} 

public static void setTransactionSuccessful() { 
    if (db != null) { 
     db.setTransactionSuccessful(); 
    } 
} 

public static void endTransaction() { 
    if (db != null) { 
     db.endTransaction(); 
    } 
} 

public static String getMaxSize() { 
    if (db != null) { 
     return db.getMaximumSize() + ""; 
    } 
    return "DB Is Null"; 
} 

public static String getPageSize() { 
    if (db != null) { 
     return db.getPageSize() + ""; 
    } 
    return "DB Is Null"; 
} 

public static String isReadOnly() { 
    if (db != null) { 
     return db.isReadOnly() + ""; 
    } 
    return "DB Is Null"; 
} 

public static int releaseMemory() { 
    if (db != null) { 
     return SQLiteDatabase.releaseMemory(); 
    } 
    return -1; 
} 

public static String inTransaction() { 
    if (db != null) { 
     return db.inTransaction() + ""; 
    } 
    return "DB Is Null"; 
} 

public static void insert(String table, ContentValues cv) { 
    openDB(); 

    if (db != null) { 
     db.insert(table, null, cv); 
    } 
} 
} 

要使用它:

String sql = "UPDATE L_System SET Value = '" + p.versionName + "' WHERE Setting = 'keyboardVersion'"; 
    DataBaseConnector.execSQL(sql); 

更新

教程:http://www.vogella.com/tutorials/AndroidSQLite/article.html