導航:首頁 > 編程語言 > java獲取資料庫信息

java獲取資料庫信息

發布時間:2022-04-12 08:24:17

java我要獲取資料庫信息,但是實際上不允許我直接操作資料庫,我該怎麼辦,用jdbc連接

1、創建和打開資料庫
android中創建和打開資料庫要使用openOrCreateDatabase()方法來實現,返回一個
SQLiteDatabase對象
mSQLiteDatabase = this.openOrCreateDatabase("Examples_08_10",MODE_PRIVATE,null);
2、創建表
使用execSQL方法創建表
String CREATE_TABLE = "CREATE_TABLE table1(_id INTEGER PRIMARY KEY,num INTERGER,data TEXT)";
mSQLitedatabase.execSQL(CREATE_TABLE);
3、向表中添加一條數據
可以使用insert方法來添加數據,但是insert方法要求把數據都打包到ContentValues中,ContentValues
其實就是一個Map,Key值是欄位名稱,Value值是欄位的值,通過ContentValues的put方法就可以把數據
放到ContentValues對象中,然後插入到表中
ContentValues cv = new ContentValues();
cv.put(TABLE_NUMBER,1);
cv.put(TABLE_DATA,"測試資料庫數據");
mSQLiteDatabase.insert(TABLE_NAME,null,cv);
這里也可以使用execSQL方法來執行一條插入的SQL語句
String INSERT_DATA = "INSERT INTO table1(_id,num,data)values(1,1,'通過SQL語句插入')";
mSQLiteDatabase.execSQL(INSERT_DATA);
4、從表中刪除數據
mSQLiteDatabase.delete("Examples_08_10.db","WHERE _id" + 0,null);
String DELETE_DATA = "DELETE FROM table1 WHERE_id=1";
mSQLiteDatabase.execSQL(DELETE_DATA);
5、修改表中的數據
ContentValues cv = new ContentValues();
cv.put(TABLE_NUMBER,1);
cv.put(TABLE_DATA,"修改後的數據");
mSQLiteDatabase.execSQL("table1",cv,"num" + "=" + Integer.toString(0),null);
6、關閉資料庫
mSQLiteDatabase.close();
7、刪除指定表
mSQliteDatabase.execSQl("DROP TABLE table1");
8、刪除資料庫
this.deleteDatabase("Examples_08_10.db");
9、查詢表中的某條數據
在Android中查詢數據是通過Cursor類來實現的,當我們使用SQliteDatabase.query()方法時
會返回一個Cursor對象,Cursor指向的是每一條數據,它提供了很多有關查詢的方法,具體方法
Cursor cur = mSQLiteDatabase.rawQuery("SELECT * FROM table",null);
if(cur !=null){
if(cur.moveToFirst()){
do{
int numColumn =cur.getColumnIndex("num");
int num = cur.getInt(numColumn);
}while(cur.moveToNext());
}
}
public class Activity01 extends Activity{
private static int mCount = 0;
//資料庫對象
private SQLiteDatabase mSQLiteDatabase = null;
//資料庫名
private final static String DATABASE_NAME = "Examples_08_11.db"
//表名
private final static String TABLE_ID = "_id";
private final static String TABLE_NUM = "num";
private final static String TABLE_DATA = "data";
//創建表的SQL語句
private final static String CREATE_TABLE = "CREATE TABLE"+TABLE_NAME + "("
+ TABLE_ID + "INTEGER PRIMARY KEY,"+TABLE_NUM + "INTERGER,"+TABLE_DATA + "
TEXT)";
//線性布局
LinearLayout m_LinearLayout = null;
//列表視圖-顯示資料庫的數據
ListView m_ListView = null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState){
m_LinearLayout = new LinearLayout(this);
m_LinearLayout.setOrientation(LinearLayout.VERTICAL);
m_LinearLayout.setBackgroundColor(android.graphics.Color.BLACK);
//創建listview對象
m_ListView = new ListView(this);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.Params.WRAP_CONTENT);
m_ListView.setBackgroundColor(Color.BLACK);
//添加m_ListView到m_LinearLayout中
m_LinearLayout.addView(m_ListView,param);
//設置顯示m_LinearLayout的布局
setContentView(m_LinearLayout);
//打開已經存在的資料庫
mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,MODE_PRIVATE,null);
//獲取資料庫Phones中的Cursor
try{
//在資料庫中創建一個表
mSQLiteDatabase.execSQL(CREATE_TABLE);
}
catch(Exception e){
eUpdateAdapter();
}
}
public boolean onKeyUp(int keyCode,KeyEvent event){
switch(keyCode){
case KeyEvent.KEYCODE_DPAD_LEFT:
AddData();
break;
case KeyEvent.KEYCODE_DAPD_RIGHT:
DeleteData();
break;
case KeyEvent.KEYCODE_DAPD_1:
UpData();
break;
case KeyEvent.KEYCODE_DAPD_2:
DeleteTable();
break;
case KeyEvent.KEYCODE_DAPD_3:
DeleteDataBase();
break;
}
}
return true;
}
//刪除資料庫
public void DeleteDataBase(){
this.deleteDatabase(DATABASE_NAME);
this.finish();
}
//刪除一個表
public void DeleteTable(){
mSQLiteDatabase.execSQL("DROP TABLE" + TABLE_NAME);
this.finish();
}
//更新一條數據
public void UpData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM,mCount);
cv.put(TABLE_DATA,"修改後的數據" + mCount);
//更新數據
mSQLiteDatabase.update(TABLE_NAME,cv,TABLE_NUM + "=" + Integer.toString(mCount -1),null);
UpdataAdapter();
}
public void AddData(){
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM,mCount);
cv.put(TABLE_DATA,"測試資料庫數據" + mCount);
//插入數據
mSQLiteData.insert(TABLE_NAME,null,cv);
mCount++;
UpdataAdapter();
}
public void DeleteData(){
mSQLiteDatabase.execSQL("DELETE FROM" + TABLE_NAME + "WHERE _id=" +Integer.toString(mCount));
mCount--;
if(mCount<0){
mCount--;
}
UpdataAdapter();
}
//更新視圖顯示
public void UpdateAdapter(){
//獲取資料庫Phones的Cursor
Cursor cur = mSQLiteDatabase.query(TABLE_NAME,new String[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null,null,null,null,null);
mCount = cur.getCount();
if(cur !=null && cur.getCount()>=0){
ListAdapter adapter = new SimpleCusorAdapter(this,android.R.layout.simple_list_item_2,cur,new String[]{TABLE_NUM,TABLE_DATA},new int[]{android.R.id.text1,android.R.id.text2});
m_ListView.setAdapter(adapter);
}
}
//按鍵事件處理
public boolean onKeyDown(int keyCode,KeyEvent event){
if(keyCode == KeyEvent.KEYCODE.KEYCODE_BACK){
//退出時不要忘記關閉
mSQLiteDatabase.close();
this.finish();
return true;
}
return super.onKeyDown(keyCode,event);
}
}
SQliteOpenHelper應用
前面我們已經學過了SQLite編程基礎,但是在實際開發中,為了更好的管理和維護資料庫,我們會封裝一個繼承自SQLiteOpenHelper類的資料庫操作類。SQLiteOpenHelper的構造方法中分別需要傳入Context、資料庫名稱、CursorFactory(一般傳入null,否則為默認資料庫)、
資料庫的版本號(不能為負數)同樣在SQLiteOpenHelper中首先執行的是onCreate方法(當資料庫第一次被創建時)。當然,在構造函數時並沒有真正創建資料庫,而是調用getWritableDatabase或者getReadableDatabase方法時才真正去創建資料庫,並且返回一個SQLiteDatabase
對象。因此,我們就可以輕松的修改上一節了。
public class MyDataBaseAdapter{
//用於列印日誌
private static final String TAG = "MyDataAdapter";
//表中一條數據的名稱
private static final String KEY_ID = "_id";
//表中一條數據的內容
private static final String KEY_NUM = "num";
//表中一條數據的id
private static final String KEY_DATA = "data";
//資料庫的名稱
private static final String DB_NAME = "Examples_8_11.db";
//資料庫表名
private static final String DB_TABLE = "table1";
//資料庫版本
private static final int DB_VERSION = 1;
//本地Context對象
private Context mContext = null;
private static final String DB_CREATE ="CREATE TABLE" + DB_TABLE + "(" +KEY_ID+"INTEGER PRIMARY KEY,"+KEY_NUM+"INTERGER,"+KEY_DATA+"TEXT)";
//執行open()打開資料庫時,保存返回的資料庫對象
private SQLiteDatabase mSQLiteDatabase = null;
//由SQLiteOpenHelper繼承過來
private DatabaseHelper mDatabaseHelper = null;
private static class DatabaseHelper extends SQLiteOpenHelper{
//構造函數創建一個資料庫
DatabHelper(Context context){
//當調用getWritableDatabase()
//或getReadableDatabase()方法時
//則創建一個資料庫
super(context,DB_NAME,null,DB_VERSION);
}
//創建一個表
public void onCreate(SQLiteDatabase db){
//資料庫沒有表時創建一個
db.execSQL(DB_CREATE);
}
//升級資料庫
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
//構造函數
public MyDataBaseAdapter(Context mContext){
mContext = context;
}
//打開資料庫
public void open()throws SQLException{
mDatabaseHelper = new DatabaseHelper(mContext);
mSQLiteDatabase = mDatabasehelper.getWritableDatabase();
}
//關閉資料庫
public void close(){
mDatabaseHelper.close();
}
//插入一條數據
public long insertData(int num,String data){
ContentValues initialvalues = new ContentValues();
initialValues.put(KEY_NUM,num);
initialValues.put(KEY_DATA,data);
return mSQLiteDatabase.insert(DB_TABLE,KEY_ID,initialValues);
}
//刪除一條數據
public boolean deleteData(long rowId){
return mSQLiteDatabase.delete(DB_TABLE,KEY_ID+"="+rowId,null)>0;
}
//通過Cursor查詢所有數據
public Cursor fetchAllData(){
return mSQLiteDatabase.query(DB_TABLE,new String[]{KEY_ID,KEY_NUM,KEY_DATA},null,null,null,null,null);
}
//查詢指定數據
public Cursor fetchData(long rowId,null,null,null,null,null);
if(mCursor !=null){
mCursor.moveToFirst();
}
return mCursor;
}
//更新一條數據
public boolean updateData(long rowId,int num,String data){
ContentValues args = new ContentValues();
args.put(KEY_NUM,num);
args.put(KEY_DATA,data);
return mSQLiteDatabase.update(DB_TABLE,args,KEY_ID+"="+rowId,null)>0;
}
}
如何使用MyDataBaseAdapter
public class Activity01 extends mCount = 0;
//線性布局
LinearLayout m_LinearLayout = null;
//列表視圖-顯示資料庫中的數據
ListView mListView = null;
MyDataBaseAdapter m_MyDataBaseAdapter;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//創建線性布局對象
m_LinearLayout = new LinearLayout(this);
m_LinearLayout.setOrientation

❷ java如何獲得資料庫表中各欄位的欄位名

Java獲取資料庫的表中各欄位的欄位名,代碼如下:

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.PreparedStatement;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
publicclassTestDemo{
(){
Connectionconn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
Stringurl="jdbc:mysql://資料庫IP地址:3306/資料庫名稱";
Stringuser="資料庫用戶名";
Stringpass="資料庫用戶密碼";
conn=DriverManager.getConnection(url,user,pass);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicstaticvoidmain(String[]args){
Connectionconn=getConnection();
Stringsql="select*fromAccessType";
PreparedStatementstmt;
try{
stmt=conn.prepareStatement(sql);
ResultSetrs=stmt.executeQuery(sql);
ResultSetMetaDatadata=rs.getMetaData();
for(inti=1;i<=data.getColumnCount();i++){
//獲得所有列的數目及實際列數
intcolumnCount=data.getColumnCount();
//獲得指定列的列名
StringcolumnName=data.getColumnName(i);
//獲得指定列的列值
intcolumnType=data.getColumnType(i);
//獲得指定列的數據類型名
StringcolumnTypeName=data.getColumnTypeName(i);
//所在的Catalog名字
StringcatalogName=data.getCatalogName(i);
//對應數據類型的類
StringcolumnClassName=data.getColumnClassName(i);
//在資料庫中類型的最大字元個數
intcolumnDisplaySize=data.getColumnDisplaySize(i);
//默認的列的標題
StringcolumnLabel=data.getColumnLabel(i);
//獲得列的模式
StringschemaName=data.getSchemaName(i);
//某列類型的精確度(類型的長度)
intprecision=data.getPrecision(i);
//小數點後的位數
intscale=data.getScale(i);
//獲取某列對應的表名
StringtableName=data.getTableName(i);
//是否自動遞增
booleanisAutoInctement=data.isAutoIncrement(i);
//在資料庫中是否為貨幣型
booleanisCurrency=data.isCurrency(i);
//是否為空
intisNullable=data.isNullable(i);
//是否為只讀
booleanisReadOnly=data.isReadOnly(i);
//能否出現在where中
booleanisSearchable=data.isSearchable(i);
System.out.println(columnCount);
System.out.println("獲得列"+i+"的欄位名稱:"+columnName);
System.out.println("獲得列"+i+"的類型,返回SqlType中的編號:"+columnType);
System.out.println("獲得列"+i+"的數據類型名:"+columnTypeName);
System.out.println("獲得列"+i+"所在的Catalog名字:"+catalogName);
System.out.println("獲得列"+i+"對應數據類型的類:"+columnClassName);
System.out.println("獲得列"+i+"在資料庫中類型的最大字元個數:"+columnDisplaySize);
System.out.println("獲得列"+i+"的默認的列的標題:"+columnLabel);
System.out.println("獲得列"+i+"的模式:"+schemaName);
System.out.println("獲得列"+i+"類型的精確度(類型的長度):"+precision);
System.out.println("獲得列"+i+"小數點後的位數:"+scale);
System.out.println("獲得列"+i+"對應的表名:"+tableName);
System.out.println("獲得列"+i+"是否自動遞增:"+isAutoInctement);
System.out.println("獲得列"+i+"在資料庫中是否為貨幣型:"+isCurrency);
System.out.println("獲得列"+i+"是否為空:"+isNullable);
System.out.println("獲得列"+i+"是否為只讀:"+isReadOnly);
System.out.println("獲得列"+i+"能否出現在where中:"+isSearchable);
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
}

❸ java 獲取mysql 某個資料庫中所有表及表的列的信息

mysql裡面提供了很多方法來獲取表結構和表列:如下方法
獲得某表所有列的信息:
String sql = select * from tname;//tname為某一表名
Connection conn = ....;
Statement st = conn.createStatement();
ResultSet rs = st.rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int colcount = rsmd.getColumnCount();//取得全部列數

for(int i=0;i<colcount;i++){
String colname = rsmd.getColumnName(i);//取得全部列名
}

以上為某表欄位具體查詢,如果是查詢表的信息,如在mysql伺服器上那樣的查詢結果的話,可以用一下代碼:
ResultSet.executeQuery("show tables")可以的到所有的表信息。
ResultSet.executeQuery("describe tname")可以得到表的欄位信息。//tname為表名

❹ 使用java,用resultset獲取資料庫中的結果

ResultSet
是一個迭代模式的動態連接容器。
迭代模式的容器遍歷的時候通常是這樣的
while(rs.next()){
//循環內容
}
rs.next()返回值是一個boolean,表示在迭代過程中是否已經到結尾。
直接從statement.excuteQuery()獲得的rs默認數據游標在起始數據的前一個位置,調用一遍rs.next()才能指向可能有數據的第一條數據。然後遍歷繼續,直到迭代集合中再無數據rs.next()返回false;
ps:rs.getRow()表達的意思是結果集在當前游標下共存在多少列,不是rs的size()
在循環體中您將可以獲得當前整行數據的各個列的值以及其它信息。

❺ java獲取資料庫數據

1、對應資料庫中的表創建實體類(entity),封裝a、b、c等欄位。
2、使用jdbc查詢資料庫,一行數據對應一個實體對象,放進一個集合List<entity>中。

❻ java 怎麼動態獲取資料庫數據

你是從 servlet 跳轉到 jsp 吧,你可以在servlet查詢到 選項框里的內容List傳到jsp
然後:
<select>
<c:foreach item="${List}" var="ml">
<option value="${ml.name}">${ml.name}</option>
</c:foreach>。

❼ java中怎麼獲取mysql資料庫的數據

用JDBC連接資料庫,然後用sql語句。要導入mysql的驅動包。
import java.sql.*;

public class TestMySql {
static Connection con = null; // 聲明Connection對象
static Statement sql = null;
static ResultSet res = null;

public static void main(String[] args) {
TestMySql c = new TestMySql();
con = c.getConnection();
try {
sql = con.createStatement();
res = sql.executeQuery("select * from dept");
//sql語句,我資料庫里有張dept表

while (res.next()) {//輸出結果
System.out.print(res.getString(1) + "<——>");
System.out.print(res.getString(2) + "<——>");
System.out.print(res.getString(3) );
System.out.println();
}

} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (res != null) {
res.close();
res =null;
}
if (sql != null) {
sql.close();
sql =null;
}
if (con != null) {
con.close();
con =null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}

}

public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
// 載入oracleJDBC驅動
System.out.println("資料庫驅動載入成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {// 通過訪問資料庫的URL獲取資料庫連接對象
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydata", "root", "qwer1234");
//mydata為mysql名字

System.out.println("資料庫連接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con; // 按方法要求返回一個Connection對象
}

}

❽ java怎麼獲取其他資料庫的數據

先用rs.first()移動到查詢到的第一條數據,然後用rs.getString()等方法獲取到各個欄位,如果有多行的話可以用rs.next()移到下一條數據。

❾ java怎樣獲取mysql資料庫欄位內容

你用的是什麼資料庫?
哦...呵呵剛沒注意標題...
這個我以前寫的,
假設你的用戶名和密碼都是root,你看下吧,不過在運行之前要先導入連接的那個jar文件

import java.sql.*;

public class TestConnectMySQL {

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance(); // new一個Driver
conn = DriverManager.getConnection("jdbc:mysql://localhost/A?" //連接MySQL 不理解就記住
+ "user=root&password=root");
stmt = conn.createStatement(); //通過連接創建(createStatement)一個語句對象,不是new
rs = stmt.executeQuery("select * from pers"); //執行查詢,返回一個結果集rs相當於一個游標
while (rs.next()) { //循環取得結果集(遍歷)
System.out.println(rs.getString("b") + " " //把某一欄位的內容 當成一個字元串拿出來,
+ rs.getString("c") + " " //也可以用其它的,比如rs.getInt("");等
+ rs.getString("d"));
}

} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally { //不要忘了關閉
try {
if (conn != null) {
conn.close();
conn = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

❿ java 怎麼獲取資料庫的編碼以及配置信息

Java也可以執行Mysql命令,你可以使用sql
語句,如下:
mysql>
SHOW
VARIABLES
LIKE
'%char%set%';
+--------------------------+----------------------------------+
|
Variable_name
|
Value
|
+--------------------------+----------------------------------+
|
character_set_client
|
utf8
|
|
character_set_connection
|
utf8
|
|
character_set_database
|
gbk
|
|
character_set_filesystem
|
binary
|
|
character_set_results
|
utf8
|
|
character_set_server
|
gbk
|
|
character_set_system
|
utf8
|
|
character_sets_dir
|
/u01/mysql/share/mysql/charsets/
|
+--------------------------+----------------------------------+
8
rows
in
set
mysql>
SHOW
VARIABLES
LIKE
'port';
+---------------+-------+
|
Variable_name
|
Value
|
+---------------+-------+
|
port
|
3306
|
+---------------+-------+
1
row
in
set
你如果想獲取所有配置信息可以使用:
SHOW
VARIABLES命令。

閱讀全文

與java獲取資料庫信息相關的資料

熱點內容
程序員看不懂怎麼辦 瀏覽:271
linux操作系統題 瀏覽:765
單片機無符號數加法 瀏覽:227
應用隱藏加密怎麼關閉 瀏覽:269
汽車空調的壓縮機電線有什麼用 瀏覽:429
電腦加密圖片如何取消加密 瀏覽:340
慧凈電子51單片機視頻 瀏覽:343
javamap賦值 瀏覽:165
什麼app可以玩掌機游戲 瀏覽:46
java簡單聊天室 瀏覽:462
通用汽車編程軟體 瀏覽:432
一級抗震框架梁箍筋加密區規定是多少 瀏覽:974
教你如何把安卓手機變成蘋果 瀏覽:11
app編譯分類 瀏覽:323
怎麼用伺服器的資源包 瀏覽:199
oa軟體手機登陸伺服器地址 瀏覽:289
androidrtp打包 瀏覽:723
信息被加密碼了怎麼辦 瀏覽:420
彈出光碟命令 瀏覽:517
kdj公式源碼分享 瀏覽:355