當前位置:首頁 » 安卓系統 » android添加數據

android添加數據

發布時間: 2022-05-27 01:43:41

㈠ 關於android中expandablelistview添加數據的辦法

一。 前言

因為項目的需要,開始學習android開發,是做一個類似於谷歌自帶的瀏覽器,當做到下載管理頁面的時候,ExpandableListview如何動態更新把我給難住了。後來通過大量的上網查資料,編碼實踐終於找到了解決辦法。現在把方法與大家共同探討學習。由於本人還是小菜鳥,文中肯定會出現一些低級錯誤,懇請大家批評指正。謝謝啦。
首先學習參考下谷歌瀏覽器下載的界面:

界面比較的簡潔明,很明確是用ExpandableListview外加adapter實現的,每個父項(group)展開來就是一個子項(child)列表,每個child包含一個progressbar和imageview和若干個textview。
二. ExpandableListview和ExpandableListAdapter熟悉

首先來看一下ExpandableListview應用的一個簡單的例子,重點是ExpandableListAdapter適配器的使用。

例子1:

1. Test.java
public class TestActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//創建一個BaseExpandableListAdapter對象
ExpandableListAdapter adapter = new BaseExpandableListAdapter()
{
private String[] armTypes = new String[]
{ "第0行", "第1行", "第2行"};
private String[][] arms = new String[][]
{
{ "第0項", "第1項"},
{ "第0項", "第1項", "第2項"},
{ "第0項", "第1項" , "第2項" , "第3項"}
};
//獲取指定組位置、指定子列表項處的子列表項數據
@Override
public Object getChild(int groupPosition, int childPosition)
{
return arms[groupPosition][childPosition];
}
@Override
//子項id
public long getChildId(int groupPosition, int childPosition)
{
return childPosition;
}
@Override
//該組的子項數目
public int getChildrenCount(int groupPosition)
{
return arms[groupPosition].length;
}
//返回TextView對象
private TextView getTextView()
{
//設置每個TextView外觀
//因為我使用的是480*320模擬器進行編碼測試,所以在其他解析度的模擬器上運行可能group項顯示出來會出
//現重疊等問題,請修改下面函數中紅色字體的參數值調整即可
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 64);
TextView textView = new TextView(TestActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
textView.setPadding(36, 0, 0, 0);
textView.setTextSize(20);
return textView;
}
//該方法決定每個子選項的外觀
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent)
{

System.out.println("第"+groupPosition+"行"+","+"第"+childPosition+"項");
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
}
//獲取指定組位置處的組數據
@Override
public Object getGroup(int groupPosition)
{
return armTypes[groupPosition];
}
@Override
//獲得組數目
public int getGroupCount()
{
return armTypes.length;
}
@Override
public long getGroupId(int groupPosition)
{
return groupPosition;
}
//該方法決定每個組選項的外觀
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent)
{

System.out.println("第"+groupPosition+"行");
LinearLayout ll = new LinearLayout(TestActivity.this);
ll.setOrientation(0);
TextView textView = getTextView();
textView.setText(getGroup(groupPosition).toString());
ll.addView(textView);
return ll;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition)
{
return true;
}
@Override
public boolean hasStableIds()
{
return true;
}
};
ExpandableListView expandListView = (ExpandableListView)
findViewById(R.id.list);
//設置adapter
expandListView.setAdapter(adapter);
}
}
2.Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ExpandableListView
android:id="@+id/list"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</LinearLayout>
代碼運行之後是這個效果,廢話我就不多說了。大致原理就是為了每個ExpandableListview配置了一個adapter適配器,規定了數據顯示的格式內容。而我們是通過重寫ExpandableListadapter的一些方法達到我們的目的的。函數很多,不一一說,不過有幾個比較重要的函數如下:
public Object getGroup(int groupPosition)
//獲得父項數據
public Object getChild(int groupPosition, int childPosition):
//獲得子項數據
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent)
//獲得父項的view
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent)
//獲得子項的view
這些函數都是在expandablelistview顯示時候適配器自動調用執行的。在這里我發現了一些的問題。在進行一些計算時候,有寫數據被重復計算了或而且顯示數據被覆蓋,找其原因就是,就是每個函數被調用的次數不止一次。。為了弄清楚真相,我分別在getGroupView(),getChildView()這兩個關鍵函數里寫了幾個控制台輸出信息,方便我們觀察其函數的調用關系和順序。當程序運行第一次顯示時候,如圖2,觀察結果如下:

getGroupView()函數被總共調用了6次,在繪制每一行都被調用了2次,而且是安順序的,與此同時,子項的構造函數getChildView()卻沒有被調用。可能大家都有疑問了,稍安勿躁,我們再進行下一步操作,展開第0行,如圖3,這是控制台輸出如下:

很明顯,這次每個父項都被繪制了兩次,子項也是,而且都是按順序的,繪制完第0行,第0項,第1項。。。。繪完重頭開始一遍。不信我們可以多試幾次,是類似的情況,同一項都被繪制了兩次。
由上我們可以總結出這樣一個規律,當顯示這樣一個特殊的ExpandableListview時候,只要你進行一次界面的操作,展開或者關閉一個項,函數都要進行重繪,重新繪制顯示出來的行和項,就像顯示器的刷新一樣。而且這樣的操作要進行重復的2次。為什麼是2次呢。。我也百思不得其解,上網查了許多資料都沒有說明,最後在逛外國一論壇貼子時,看到一個老外給出了這樣解答。。翻譯過來大概是這樣的,android並不保證每次的數據刷新成功,所以它就多刷了幾次保證數據能夠正常顯示出來,正確與否有待考證,勉強算個理由吧。。
所以,大家注意了,以後就不要在adapter重載的函數里特別是getchildview()和getgroupview(),放一些非同步的數據計算等相關操作,因為這些數據可能就會被系統第二次調用函數所覆蓋掉。。。。

三。 ExpandableListview動態刷新顯示數據

1.Handler機制
Android不允許Activity新啟動的線程訪問該Activity里的UI組件,這就出現了新線程無法改變UI界面的屬性,但是我們要讓新啟動的線程周期性的改變界面組件的屬性,就需要通過一些特殊的方法。android有幾種方法可以實現,分別是AsyncTask,Handler等幾種方式。其他幾種方式不熟悉,這里我用的是Handler機制。
Handler運行在主線程中(UI線程中),它與子線程可以通過Message對象來傳遞數據。Handler可以分發Message對象和Runnable對象到主線程中, 每個Handler實例,都會綁定到創建他的線程中(一般是位於主線程)。這個時候,Handler就承擔著接受子線程傳過來的(子線程用sedMessage()方法傳遞Message對象(裡麵包含數據),把這些消息放入主線程隊列中,配合主線程進行更新UI。
Handler中分發消息的一些方法,具體請看api和源碼
post(Runnable)
postAtTime(Runnable,long)
postDelayed(Runnable long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message,long)
sendMessageDelayed(Message,long)

2. notifyDataSetChanged()

ExpandableListview在你不做任何界面操作時是不會自動調用函數刷新數據的。而有時候我們需要android界面自動更新某些界面元素,這就需要用到notifyDataSetChanged()。而notifyDataSetChanged()方法就是通過一個外部的方法控制如果適配器的內容改變時需要強制調用getView來刷新每個Item的內容的。

㈡ android 數組添加數據

這樣直接定義了數組的長度,是沒有辦法增加的

如果想要增加的話:

intinSize=2;//增加的個數
doubletemp[]=newdouble[doubles.length+inSize];//臨時數組
System.arrayCopy(doubles,0,temp,0,doubles.length);//把數組doubles拷貝到temp
temp[5]=6;
temp[6]=7;
doubles=temp;

㈢ Android 怎樣在應用程序中向文件里寫入數據

  1. Android 怎樣在應用程序中向文件里寫入數據?在AndroidManifest.xml中添加, <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />,解決!

  2. 另外了解一下android的數據存儲方式:文件流的讀取,sqlite,Content Provider以及Preference.。 註:resource和assets中的文件用戶方面是只可以讀取不能夠進行寫的操作的。
    Content Provider作為程序之間唯一共享數據途徑,用在這里不是很合適。所以,
    第一種方式,使用FileInputStream,FileOutputStreami類實現文件I/O操作,直接往手機中存儲數據。
    第二種方式,使用SQLite,通過SQLiteDatabase類中方法操作數據。
    第三種方式,Preference用於存儲簡單數據類型的數據,一些設置信息的保存。個人認為用在這里最合適。 它利用鍵值對存儲的。例:
    存儲:SharedPreferences.Editor editor =sp.edit();
    editor.putString(KEY_TEXT,"yonghu");
    editor.commit();
    獲取 :sp =getPreferences(MODE_PRIVATE);

    String result =sp.getString(KEY_TEXT,null)

  3. Android保存數據幾種常用方法解析

    它應用於手機中能夠幫助我們實現許多需求。比如今天為大家介紹的Android保存數據,就是其中一個比較重要的操作技巧。Android組件相關概念總結Android傳值方法細講Android橫豎屏切換正確實現方式分享Android開發環境相關配置概覽Android NDK具體作用講解對於我們所熟悉的大部分軟體都有一個比較典型的特點,應用現有的數據根據不同的需求來得到相應的結果。例如,我們最常用的Officeword、Excel、PowerPoint等辦公軟體,它們都是幫助我們完成某種特定的需求,同時由其所產生的數據或者文檔又可以被其它軟體所讀取和做進一步的優化等等,在這個層面上可以看成是這些軟體通過相同的文件標准來共享數據。但是對於Android最大的不同點在於,其平台上的應用軟體所存儲的數據或者文件是私有,僅僅可以通過它自身才可以訪問其所包含的數據資源。那麼基於這樣的限制,該如何在Android平台上實現不同程序間的數據共享呢?答案非常簡單 – 應用ContentProviders,這是建立在Android平台上用於定義統一的數據標准。Android提供了針對不同數據類型的ContentProviders來滿足各種需要。例如:Image、Audio、Video和通訊錄信息類等。閱讀下邊的文檔之前,最好先熟悉Content Providers的概念。有了上邊所提到Content Providers,接下來就要處理在共享文件過程中的存儲環節了,這里有四種方法分別適用於不同情況的需求。它們都各自有相應的優缺點,所以當開發者決定選擇應用哪種方法之前,先要考慮當前所操作的情況是否適合於所選擇的方法。Preferences Files Databases Network 接下來將依次介紹上訴四個Android保存數據方法:Preferences從其保存數據的結構來分析,這是一個相對較輕量級的存儲數據的方法。類似於我們常用的ini文件保存軟體初始化設置,同樣在Android平台常用於存儲較簡單的參數設置。例如,可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序後依然保持原有的設置。通過Context.getSharedPreferences()方法來讀寫數值,這個方法通過設置name來使得同一個程序內的其它模塊共享數據。如果不需要與其它模塊共享數據,可以使用Activity.getPreferences()方法保持數據私有。需要著重強調一點,無法直接在多個程序間共享Preferences數據(不包括使用Content Providers)。通過一個實例來了解實際使用方法:import android.app.Activity; import android.content.SharedPreferences; public class Calc extends Activity { public static final String PREFS_NAME = "MyPrefsFile"; . . . . Override protected void onCreate(Bundle state){ super.onCreate(state); . . . . // Restore preferences SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); boolean silent = settings.getBoolean("silentMode", false); setSilent(silent); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("silentMode", mSilentMode); // Don't forget to commit your edits!!! editor.commit(); } } Files從這是第二種方法,可以在設備本身的存儲設備或者外接的存儲設備中創建用於保存數據的文件。同樣在默認的狀態下,文件是不能在不同的程序間共享。寫文件:調用Context.openFileOutput()方法根據指定的路徑和文件名來創建文件,這個方法會返回一個FileOutputStream對象。讀取文件:調用Context.openFileInput()方法通過制定的路徑和文件名來返回一個標準的Java FileInputStream對象。
    (注意:在其它程序中將無法應用相同的路徑和文件名來操作文件)另外編譯程序之前,在res/raw/tempFile中建立一個static文件,這樣可以在程序中通過Resources.openRawResource (R.raw.myDataFile)方法同樣返回一個InputStream對象,直接讀取文件內容。Databases在Android API中包括了應用SQLite databases的介面,每個程序所創建的資料庫都是私有的,換句話說,程序間無法相互訪問對方的資料庫。在程序中創建SQLiteDatabase對象,其中包含了大部分與database交互的方法,例如:讀取數據或者管理當前數據。可以應用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法來創建新的資料庫。對於SQLitedatabase而言,其強大和方便的功能為Android提供了強有力的存儲功能。特別是存儲一些復雜的數據結構,例如:Android特別為通訊錄創建了特有的數據類型,其中包含了非常多的子集而且涵蓋了大部分的數據類型 「First Name」 「Last Name」 「PhoneNumber」和「Photo」等。Android可以通過Sqlite3 database tool來查看指定資料庫中表的內容,直接運行SQL命令來快速便捷的直接操作SQLite database。

㈣ android中,把data填上數據,在map中添加資料庫中的數據,用listview顯示。

第一種:
String[] data = {"Android應用專業開發社區:eoe.Android.com",
"eoeAndroid出品軟體如下",
"eoeIntaller",
"eoeDouBan",
"eoeWhere",
"eoeInfoAssistant"};
ListView listView = new ListView(this);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data));
第二種:(自定義界面)
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> item ;
item = new HashMap<String, Object>();
item.put("姓名", "張三小朋友");
item.put("性別", "男");
data.add(item);
item = new HashMap<String, Object>();
item.put("姓名", "小李師傅");
item.put("性別", "男");
data.add(item);
item = new HashMap<String, Object>();
item.put("姓名", "王五同學");
item.put("性別", "女");
data.add(item);
ListView listView = new ListView(this);
SimpleAdapter adapter = new SimpleAdapter(
this, data,
R.layout.activity_list2,
new String[]{"姓名","性別"},
new int[]{R.id.list2_1,R.id.list2_2});
listView.setAdapter(adapter);

㈤ android怎麼鏈接資料庫mysql

有點多請耐心看完。
希望能幫助你,還請及時採納謝謝。
一.前言

android連接資料庫的方式有兩種,第一種是通過連接伺服器,再由伺服器讀取資料庫來實現數據的增刪改查,這也是我們常用的方式。第二種方式是android直接連接資料庫,這種方式非常耗手機內存,而且容易被反編譯造成安全隱患,所以在實際項目中不推薦使用。

二.准備工作

1.載入外部jar包

在Android工程中要使用jdbc的話,要導入jdbc的外部jar包,因為在Java的jdk中並沒有jdbc的api,我使用的jar包是mysql-connector-java-5.1.18-bin.jar包,網路上有使用mysql-connector-java-5.1.18-bin.jar包的,自己去用的時候發現不兼容,所以下載了比較新版本的,jar包可以去官網下載,也可以去網路,有很多前人們上傳的。

2.導入jar包的方式

方式一:

可以在項目的build.gradle文件中直接添加如下語句導入

compile files('libs/mysql-connector-java-5.1.18-bin.jar')
方式二:下載jar包復制到項目的libs目錄下,然後右鍵復制過來的jar包Add as libs

三.建立資料庫連接

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_jdbc);
new Thread(runnable).start();
}

Handler myHandler=new Handler(){

public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle data=new Bundle();
data=msg.getData();

//System.out.println("id:"+data.get("id").toString()); //輸出第n行,列名為「id」的值
Log.e("TAG","id:"+data.get("id").toString());
TextView tv= (TextView) findViewById(R.id.jdbc);

//System.out.println("content:"+data.get("content").toString());
}
};

Runnable runnable=new Runnable() {
private Connection con = null;

@Override
public void run() {
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.jdbc.Driver");
//引用代碼此處需要修改,address為數據IP,Port為埠號,DBName為數據名稱,UserName為資料庫登錄賬戶,Password為資料庫登錄密碼
con =
//DriverManager.getConnection("jdbc:mysql://192.168.1.202:3306/b2b", "root", "");
DriverManager.getConnection("jdbc:mysql://http://192.168.1.100/phpmyadmin/index.php:8086/b2b",
UserName,Password);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
testConnection(con); //測試資料庫連接
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void testConnection(Connection con1) throws java.sql.SQLException {
try {
String sql = "select * from ecs_users"; //查詢表名為「oner_alarm」的所有內容
Statement stmt = con1.createStatement(); //創建Statement
ResultSet rs = stmt.executeQuery(sql); //ResultSet類似Cursor

//<code>ResultSet</code>最初指向第一行
Bundle bundle=new Bundle();
while (rs.next()) {
bundle.clear();
bundle.putString("id",rs.getString("userid"));
//bundle.putString("content",rs.getString("content"));
Message msg=new Message();
msg.setData(bundle);
myHandler.sendMessage(msg);
}

rs.close();
stmt.close();
} catch (SQLException e) {

} finally {
if (con1 != null)
try {
con1.close();
} catch (SQLException e) {}
}
}
};

注意:

在Android4.0之後,不允許在主線程中進行比較耗時的操作(連接資料庫就屬於比較耗時的操作),需要開一個新的線程來處理這種耗時的操作,沒新線程時,一直就是程序直接退出,開了一個新線程處理直接,就沒問題了。

當然,連接資料庫是需要網路的,千萬別忘了添加訪問網路許可權:

<uses-permission android:name=」android.permission.INTERNET」/>

四.bug點

1.導入的jar包一定要正確

2.連接資料庫一定要開啟新線程

3.資料庫的IP一定要是可以ping通的,區域網地址手機是訪問不了的

4.資料庫所在的伺服器是否開了防火牆,阻止了訪問
————————————————
版權聲明:本文為CSDN博主「shuaiyou_comon」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shuaiyou_comon/article/details/75647355

㈥ android的ListView如何追加數據

listview的適配器adapter裡面調用additem(List)這樣的方法,如果沒有,就自己 寫一個,就是給adapter中的list追加數據而已,然後調用adapter的刷新就好了,esay

㈦ android中如何動態創建數據表

在布局中加入表格

<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/table1">

</TableLayout>
之後再 MainActivity 中寫入動態添加的代碼
public void click(View v) {
if(row.getText().length()>0&&column.getText().length()>0){
//把輸入的行和列轉為整形
int row_int=Integer.parseInt(row.getText().toString());
int col_int=Integer.parseInt(column.getText().toString());

//獲取控制項tableLayout
tableLayout = (TableLayout)findViewById(R.id.table1);
//清除表格所有行
tableLayout.removeAllViews();
//全部列自動填充空白處
tableLayout.setStretchAllColumns(true);
//生成X行,Y列的表格
for(int i=1;i<=row_int;i++)
{
TableRow tableRow=new TableRow(MainActivity.this);
for(int j=1;j<=col_int;j++)
{
//tv用於顯示
TextView tv=new TextView(MainActivity.this);
//Button bt=new Button(MainActivity.this);
tv.setText("("+i+","+j+")");

tableRow.addView(tv);
}
//新建的TableRow添加到TableLayout

tableLayout.addView(tableRow, new TableLayout.LayoutParams(MP, WC,1));

}
}else{
Toast.makeText(MainActivity.this,"請輸入數值",1).show();
}

}

㈧ android 怎麼往資料庫裡面添加數據

一、引入
資料庫創建的問題解決了,接下來就該使用資料庫實現應用程序功能的時候了。基
本的操作包括創建、讀取、更新、刪除,即我們通常說的 CRUD(Create, Read, Update, Delete)。
在實現這些操作的時候,我們會使用到兩個比較重要的類 SQLiteDatabase 類和 Cursor 類。

二、創建表
1,execSQL(String sql):執行一條 sql 語句,且執行操作不能為 SELECT
因為它的返回值為 void,所以推薦使用 insert、update 方法等
2.,execSQL (String sql,Object[] bindArgs)
sql:執行一條 sql 語句
bindArgs:為 sql 語句中的?賦值

三、添加數據
1、execSQL(String sql)
2、使用對象的 insert 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
參數:
table:資料庫中的表名
nullColumnHack:指定默認插入欄位,為 null 時能插入數據
values:表示插入欄位所對應的值,使用 put 方法。

四、刪除數據
1、execSQL(String sql)
2、使用對象的 delete 方法
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(id)};
//db.delete(TABLE_NAME, "_id="+id, null);
db.delete(TABLE_NAME, whereClaues, whereArgs);
參數
table:資料庫的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值

五、修改數據
1、execSQL(String sql)
2、使用對象的 delete 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(user.getId())};
db.update(TABLE_NAME, values, whereClaues, whereArgs);
參數
table:資料庫的表名
values:代表要修改的值,修改方法還是 put(key,values)
whereClause:條件子句,比如 id=?,name=?
whereArgs:為 whereClause 中的?賦值,比如:new String[]{"1","張三"}

圖:

參考代碼:

程序內使用SQLite資料庫是通過SQLiteOpenHelper進行操作

1.自己寫個類繼承SQLiteOpenHelper,重寫以下3個方法

publicvoidonCreate(SQLiteDatabasedb)

{//創建資料庫時的操作,如建表}

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)

{

//版本更新的操作

}

2.通過SQLiteOpenHelper的getWritableDatabase()獲得一個SQLiteDatabase資料庫,以後的操作都是對SQLiteDatabase進行操作。

3.對得到的SQLiteDatabase對象進行增,改,刪,查等操作。

代碼

packagecx.myNote;

importandroid.content.ContentValues;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

//DBOptionsforlogin

publicclassDBOptions{

privatestaticfinalStringDB_NAME="notes.db";

privatestaticfinalStringDB_CREATE="createtablelogininf(nametext,pwdtext)";

{

publicDBHelper(Contextcontext){

super(context,DB_NAME,null,1);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

//TODOAuto-generatedmethodstub

//建表

db.execSQL(DB_CREATE);

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

//TODOAuto-generatedmethodstub

db.execSQL("droptableifexistslogininf");

onCreate(db);

}

}

privateContextcontext;

privateSQLiteDatabasedb;

privateDBHelperdbHelper;

publicDBOptions(Contextcontext)

{

this.context=context;

dbHelper=newDBHelper(context);

db=dbHelper.getReadableDatabase();

}

//自己寫的方法,對資料庫進行操作

publicStringgetName()

{

Cursorcursor=db.rawQuery("selectnamefromlogininf",null);

cursor.moveToFirst();

returncursor.getString(0);

}

publicintchangePWD(StringoldP,Stringpwd)

{

ContentValuesvalues=newContentValues();

values.put("pwd",pwd);

returndb.update("logininf",values,"pwd="+oldP,null);

}

}


insert方法插入的一行記錄使用ContentValus存放,ContentValues類似於Map,它提供了put(String key, Xxx value)(其中key為數據列的列名)方法用於存入數據、getAsXxxx(String key)方法用於取出數據

㈨ 如何往android中添加資料庫

一、新建外部SQLite資料庫
(1)下載並安裝 SQLite可視化管理工具(SQLite Expert Pro) v3.4.17 破解版
http://www.cr173.com/soft/36343.html
(2)將你手頭上的數據放到EXCEL表格中,保存為CSV格式的數據
(3)在此工具中按照你現有的數據格式新建資料庫和表,如資料庫為:contact.db,表為employee
(4)通過此工具菜單欄中Import/Export下的Import text file(CSV,TSC)功能,將你現有的CSV數據導入到你新建的數據表中(主要目的是省的一個一個的錄入了)
二、在eclipse中新建一個android app工程,並在新建的工程文件夾點右鍵new->folder,在res文件夾下新建raw文件夾(如果有就不用新建了)
三、用滑鼠將新建的SQLite資料庫文件contact.db拖動到新建工程的res下的raw文件下,出現提示,選擇
四、程序代碼
private static final String DATABASE_PATH = "/data/data/你的主程序包路徑(如:com.szair.contact)/databases";
private static final int DATABASE_VERSION = 0;
private static final String DATABASE_NAME = "contact.db";
private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;
try {
buildDatabase();//見下
} catch (Exception e) {
e.printStackTrace();
}
//SQLiteDatabase對象
SQLiteDatabase db=SQLiteDatabase.openDatabase(outFileName, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
String t="SELECT 欄位名1,欄位名2 FROM employee WHERE **** ORDER BY ***";
Cursor c =db.rawQuery(t, null);
if(c.moveToFirst()){
for(int i=0;i
{
String zian1=c.getString(0);//欄位1的數據
String zian2=c.getString(1);//欄位1的數據
}
}
------------------------------------------------
//前面用到的buildDatabase方法
private void buildDatabase() throws Exception{
InputStream myInput = getResources().openRawResource(R.raw.sz_contact);
File file = new File(outFileName);
File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
if (!dir.mkdir()) {
throw new Exception("創建失敗");
}
}

if (!file.exists()) {
try {
OutputStream myOutput = new FileOutputStream(outFileName);

byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.close();
myInput.close();
} catch (Exception e) {
e.printStackTrace();
}

}
}
五、程序發布
按照以上方式,可以將外部建的SQLite資料庫成功的發布出來

㈩ android開發中如何往調用的類庫中的資料庫插入數據

你通過getText()方法首先得到輸入的值,然後調用資料庫的插入方法 db.insert();插入到資料庫中就行 就想這樣
EditText et ;
String num = et.getText().toString();
public void addData(String num) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("num", num);
db.insert("表名", null, values);
}

當你調用這個 addData()方法時就會向資料庫中插入數據了

熱點內容
通達信自定義板塊在哪個文件夾 發布:2024-05-06 09:56:37 瀏覽:103
在linux搭建mqtt伺服器搭建 發布:2024-05-06 09:52:00 瀏覽:558
windowspython23 發布:2024-05-06 09:27:50 瀏覽:746
編程ug開初 發布:2024-05-06 09:27:48 瀏覽:560
小白源碼論壇 發布:2024-05-06 09:24:56 瀏覽:139
android進程重啟 發布:2024-05-06 09:15:09 瀏覽:96
ie瀏覽器設置默認ftp 發布:2024-05-06 09:14:03 瀏覽:885
邁騰尊貴中控配置怎麼使用 發布:2024-05-06 09:13:28 瀏覽:656
奧迪存儲卡格式不正確請格式化存儲卡 發布:2024-05-06 09:01:31 瀏覽:34
個人信用資料庫 發布:2024-05-06 09:00:34 瀏覽:417