导航:首页 > 编程语言 > 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获取数据库信息相关的资料

热点内容
优信二手车解压后过户 浏览:61
Windows常用c编译器 浏览:778
关于改善国家网络安全的行政命令 浏览:833
安卓如何下载网易荒野pc服 浏览:654
javainetaddress 浏览:104
苹果4s固件下载完了怎么解压 浏览:1002
命令zpa 浏览:285
python编译器小程序 浏览:944
在app上看视频怎么光线调暗 浏览:540
可以中文解压的解压软件 浏览:592
安卓卸载组件应用怎么安装 浏览:912
使用面向对象编程的方式 浏览:339
程序员项目经理的年终总结范文 浏览:929
内衣的加密设计用来干嘛的 浏览:432
淮安数据加密 浏览:292
魔高一丈指标源码 浏览:982
松下php研究所 浏览:168
c回调java 浏览:399
梦幻端游长安地图互通源码 浏览:745
电脑本地文件如何上传服务器 浏览:313