⑴ 連接資料庫時,通常會把重復代碼提取出來封裝到工具類中,作用是
摘要 您好,努力解答小主疑惑的飯小希很高興為您服務,感謝茫茫人海中選擇我為你解答!
⑵ android 資料庫一般放在工具類中嗎
對。都是使用sqliteOpenHelper類。下面是sqlite增刪改查的例子。例子來自android學習手冊,裡面有源碼。android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載,圖標上有貝殼
我們大家都知道Android平台提供給我們一個資料庫輔助類來創建或打開資料庫,這個輔助類繼承自SQLiteOpenHelper類,在該類的構造器中,調用Context中的方法創建並打開一個指定名稱的資料庫對象。繼承和擴展SQLiteOpenHelper類主要做的工作就是重寫以下兩個方法。
onCreate(SQLiteDatabase db) : 當資料庫被首次創建時執行該方法,一般將創建表等初始化操作在該方法中執行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):當打開資料庫時傳入的版本號與當前的版本號不同時會調用該方法。
除了上述兩個必須要實現的方法外,還可以選擇性地實現onOpen 方法,該方法會在每次打開資料庫時被調用。
SQLiteOpenHelper 類的基本用法是:當需要創建或打開一個資料庫並獲得資料庫對象時,首先根據指定的文件名創建一個輔助對象,然後調用該對象的getWritableDatabase 或 getReadableDatabase方法 獲得SQLiteDatabase 對象。
調用getReadableDatabase 方法返回的並不總是只讀資料庫對象,一般來說該方法和getWriteableDatabase 方法的返回情況相同,只有在資料庫僅開放只讀許可權或磁碟已滿時才會返回一個只讀的資料庫對象。
下面通過一個簡單的小例子說明SQLiteOpenDatabase的用法,其中包括創建資料庫、插入數據、更新 、查詢等等,我們將查詢後獲取到的數據顯示到TextView上,看一下運行後的效果。MySQLiteHelper
Java代碼
packagexiaohang.meng;
importandroid.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
{
//調用父類構造器
publicMySQLiteHelper(Contextcontext,Stringname,CursorFactoryfactory,
intversion){
super(context,name,factory,version);
}
/**
*當資料庫首次創建時執行該方法,一般將創建表等初始化操作放在該方法中執行.
*重寫onCreate方法,調用execSQL方法創建表
**/
@Override
publicvoidonCreate(SQLiteDatabasedb){
db.execSQL("createtableifnotexistshero_info("
+"idintegerprimarykey,"
+"namevarchar,"
+"levelinteger)");
}
//當打開資料庫時傳入的版本號與當前的版本號不同時會調用該方法
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
}
Activity01
Java代碼
packagexiaohang.meng;
importandroid.app.Activity;
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.widget.TextView;
{
MySQLiteHelpermyHelper;
TextViewtv;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
//創建MySQLiteOpenHelper輔助類對象
myHelper=newMySQLiteHelper(this,"my.db",null,1);
//向資料庫中插入和更新數據
insertAndUpdateData(myHelper);
//查詢數據
Stringresult=queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字 等級 "+result);
}
//向資料庫中插入和更新數據
publicvoidinsertAndUpdateData(MySQLiteHelpermyHelper){
//獲取資料庫對象
SQLiteDatabasedb=myHelper.getWritableDatabase();
//使用execSQL方法向表中插入數據
db.execSQL("insertintohero_info(name,level)values('bb',0)");
//使用insert方法向表中插入數據
ContentValuesvalues=newContentValues();
values.put("name","xh");
values.put("level",5);
//調用方法插入數據
db.insert("hero_info","id",values);
//使用update方法更新表中的數據
//清空ContentValues對象
values.clear();
values.put("name","xh");
values.put("level",10);
//更新xh的level為10
db.update("hero_info",values,"level=5",null);
//關閉SQLiteDatabase對象
db.close();
}
//從資料庫中查詢數據
publicStringqueryData(MySQLiteHelpermyHelper){
Stringresult="";
//獲得資料庫對象
SQLiteDatabasedb=myHelper.getReadableDatabase();
//查詢表中的數據
Cursorcursor=db.query("hero_info",null,null,null,null,null,"idasc");
//獲取name列的索引
intnameIndex=cursor.getColumnIndex("name");
//獲取level列的索引
intlevelIndex=cursor.getColumnIndex("level");
for(cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()){
result=result+cursor.getString(nameIndex)+" ";
result=result+cursor.getInt(levelIndex)+" ";
}
cursor.close();//關閉結果集
db.close();//關閉資料庫對象
returnresult;
}
@Override
protectedvoidonDestroy(){
SQLiteDatabasedb=myHelper.getWritableDatabase();//獲取資料庫對象
//刪除hero_info表中所有的數據傳入1表示刪除所有行------>點擊back按鈕
db.delete("hero_info","1",null);
super.onDestroy();
}
}
⑶ java.lang.NullPointerException的錯誤!!
getConn();方法在連接失敗的時候會返回一個空
下面的那個if(conn==null)在這個情況下是沒有用的,你
getConn();方法都try掉了所有的Exception
try {
if(conn==null)
getConn();
if(st==null)
st=conn.createStatement();// 執行sql語句的對象
ret = st.executeUpdate(sql);// 執行SQL語句對數據表進行操作,變數ret存放對表修改了多少行
} catch (Exception e) {
System.out.println("執行executeUpdate(sql)方法出錯:" + sql);
e.printStackTrace();// 列印出錯誤原因
}
return ret;
}
⑷ java資料庫連接資料庫工具類怎麼寫
1 將資料庫的JDBC驅動載入到classpath中,在基於JAVAEE的WEB應用實際開發過程中,通常要把目標資料庫產品的JDBC驅動復制到WEB-INF/lib下.
2 載入JDBC驅動,並將其注冊到DriverManager中,下面是一些主流資料庫的JDBC驅動加裁注冊的代碼:
//Oracle8/8i/9iO資料庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//Sql Server7.0/2000資料庫
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//DB2資料庫
Class.froName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
//Informix資料庫
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
//Sybase資料庫
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
//MySQL資料庫
Class.forName("com.mysql.jdbc.Driver").newInstance();
//PostgreSQL資料庫
Class.forNaem("org.postgresql.Driver").newInstance();
3 建立資料庫連接,取得Connection對象.例如:
//Oracle8/8i/9i資料庫(thin模式)
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="scott";
String password="tiger";
Connection conn=DriverManager.getConnection(url,user,password);
⑸ JSP怎麼使用資料庫工具類
jsp裡面可以import類,把資料庫連接需要的類引入,用<%資料庫連接代碼%>標簽寫
⑹ 微信公眾平台怎麼添加自定義菜單用java代碼實現
解決web亂碼問題工具類
cookie工具類
session工具類
Servlet文件上傳工具類
SpringMVC文件上傳工具類
資料庫操作工具類
windows進程工具類
Time工具類
常用正則表達式工具類
⑺ oracle工具類怎麼實現連接資料庫
1. Java.sql包中定義的常用的基本的JDBC API:
類DriverManager-管理一組JDBC 驅動程序的基本服務
介面Connection-獲得與特定資料庫的連接
介面Statement-用於執行靜態SQL 語句並返回它所生成結果的對象
介面ResultSet-表示資料庫結果集的數據表,通常通過執行查詢資料庫的語句生成
類SQLException-有關資料庫操作的異常
2.Oracle 資料庫的JDBC 驅動程序文件「classes14.jar」(Oracle 官方網站下載),導入jar包
此版本的Oracle版本為10g,以測試用戶scoot為例
3.定義私有變數
[java] view plain print?
<span style="white-space:pre"> </span>private static Connection conn;
private static String userName = "scott";
private static String userPwd = "tiger";
private static ResultSet rs;
⑻ 用單例模式定義一個訪問資料庫的工具類DbUtil,並調用
1單例模式只允許創建一個對象,因此節省內存,加快對象訪問速度,因此對象需要被公用的場合適合使用,如多個模塊使用同一個數據源連接對象等等2單例的缺點就是不適用於變化的對象,如果同一類型的對象總是要在不同的用例場景發生變化,單例就會引起數據的錯誤,不能保存彼此的狀態。用單例模式,就是在適用其優點的狀態下使用。