java我要获取数据库信息,但是实际上不允许我直接 *** 作数据库,我该怎么办,用jdbc连接

java我要获取数据库信息,但是实际上不允许我直接 *** 作数据库,我该怎么办,用jdbc连接,第1张

1、创建和打开数据

在Android中创建和打开数据库要使用openOrCreateDatabase()方法来实现,返回一个

SQLiteDatabase对象

mSQLiteDatabase = thisopenOrCreateDatabase("Examples_08_10",MODE_PRIVATE,null);

2、创建表

使用execSQL方法创建表

String CREATE_TABLE = "CREATE_TABLE table1(_id INTEGER PRIMARY KEY,num INTERGER,data TEXT)";

mSQLitedatabaseexecSQL(CREATE_TABLE);

3、向表中添加一条数据

可以使用insert方法来添加数据,但是insert方法要求把数据都打包到ContentValues中,ContentValues

其实就是一个Map,Key值是字段名称,Value值是字段的值,通过ContentValues的put方法就可以把数据

放到ContentValues对象中,然后插入到表中

ContentValues cv = new ContentValues();

cvput(TABLE_NUMBER,1);

cvput(TABLE_DATA,"测试数据库数据");

mSQLiteDatabaseinsert(TABLE_NAME,null,cv);

这里也可以使用execSQL方法来执行一条插入的SQL语句

String INSERT_DATA = "INSERT INTO table1(_id,num,data)values(1,1,'通过SQL语句插入')";

mSQLiteDatabaseexecSQL(INSERT_DATA);

4、从表中删除数据

mSQLiteDatabasedelete("Examples_08_10db","WHERE _id" + 0,null);

String DELETE_DATA = "DELETE FROM table1 WHERE_id=1";

mSQLiteDatabaseexecSQL(DELETE_DATA);

5、修改表中的数据

ContentValues cv = new ContentValues();

cvput(TABLE_NUMBER,1);

cvput(TABLE_DATA,"修改后的数据");

mSQLiteDatabaseexecSQL("table1",cv,"num" + "=" + IntegertoString(0),null);

6、关闭数据库

mSQLiteDatabaseclose();

7、删除指定表

mSQliteDatabaseexecSQl("DROP TABLE table1");

8、删除数据库

thisdeleteDatabase("Examples_08_10db");

9、查询表中的某条数据

在Android中查询数据是通过Cursor类来实现的,当我们使用SQliteDatabasequery()方法时

会返回一个Cursor对象,Cursor指向的是每一条数据,它提供了很多有关查询的方法,具体方法

Cursor cur = mSQLiteDatabaserawQuery("SELECT FROM table",null);

if(cur !=null){

if(curmoveToFirst()){

do{

int numColumn =curgetColumnIndex("num");

int num = curgetInt(numColumn);

}while(curmoveToNext());

}

}

public class Activity01 extends Activity{

private static int mCount = 0;

//数据库对象

private SQLiteDatabase mSQLiteDatabase = null;

//数据库名

private final static String DATABASE_NAME = "Examples_08_11db"

//表名

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){

superonCreate(savedInstanceState){

m_LinearLayout = new LinearLayout(this);

m_LinearLayoutsetOrientation(LinearLayoutVERTICAL);

m_LinearLayoutsetBackgroundColor(androidgraphicsColorBLACK);

//创建listview对象

m_ListView = new ListView(this);

LinearLayoutLayoutParams param = new LinearLayoutLayoutParams(LinearLayoutLayoutParamsFILL_PARENT,

LinearLayoutParamsWRAP_CONTENT);

m_ListViewsetBackgroundColor(ColorBLACK);

//添加m_ListView到m_LinearLayout中

m_LinearLayoutaddView(m_ListView,param);

//设置显示m_LinearLayout的布局

setContentView(m_LinearLayout);

//打开已经存在的数据库

mSQLiteDatabase = thisopenOrCreateDatabase(DATABASE_NAME,MODE_PRIVATE,null);

//获取数据库Phones中的Cursor

try{

//在数据库中创建一个表

mSQLiteDatabaseexecSQL(CREATE_TABLE);

}

catch(Exception e){

eUpdateAdapter();

}

}

public boolean onKeyUp(int keyCode,KeyEvent event){

switch(keyCode){

case KeyEventKEYCODE_DPAD_LEFT:

AddData();

break;

case KeyEventKEYCODE_DAPD_RIGHT:

DeleteData();

break;

case KeyEventKEYCODE_DAPD_1:

UpData();

break;

case KeyEventKEYCODE_DAPD_2:

DeleteTable();

break;

case KeyEventKEYCODE_DAPD_3:

DeleteDataBase();

break;

}

}

return true;

}

//删除数据库

public void DeleteDataBase(){

thisdeleteDatabase(DATABASE_NAME);

thisfinish();

}

//删除一个表

public void DeleteTable(){

mSQLiteDatabaseexecSQL("DROP TABLE" + TABLE_NAME);

thisfinish();

}

//更新一条数据

public void UpData(){

ContentValues cv = new ContentValues();

cvput(TABLE_NUM,mCount);

cvput(TABLE_DATA,"修改后的数据" + mCount);

//更新数据

mSQLiteDatabaseupdate(TABLE_NAME,cv,TABLE_NUM + "=" + IntegertoString(mCount -1),null);

UpdataAdapter();

}

public void AddData(){

ContentValues cv = new ContentValues();

cvput(TABLE_NUM,mCount);

cvput(TABLE_DATA,"测试数据库数据" + mCount);

//插入数据

mSQLiteDatainsert(TABLE_NAME,null,cv);

mCount++;

UpdataAdapter();

}

public void DeleteData(){

mSQLiteDatabaseexecSQL("DELETE FROM" + TABLE_NAME + "WHERE _id=" +IntegertoString(mCount));

mCount--;

if(mCount<0){

mCount--;

}

UpdataAdapter();

}

//更新视图显示

public void UpdateAdapter(){

//获取数据库Phones的Cursor

Cursor cur = mSQLiteDatabasequery(TABLE_NAME,new String[]{TABLE_ID,TABLE_NUM,TABLE_DATA},null,null,null,null,null);

mCount = curgetCount();

if(cur !=null && curgetCount()>=0){

ListAdapter adapter = new SimpleCusorAdapter(this,androidRlayoutsimple_list_item_2,cur,new String[]{TABLE_NUM,TABLE_DATA},new int[]{androidRidtext1,androidRidtext2});

m_ListViewsetAdapter(adapter);

}

}

//按键事件处理

public boolean onKeyDown(int keyCode,KeyEvent event){

if(keyCode == KeyEventKEYCODEKEYCODE_BACK){

//退出时不要忘记关闭

mSQLiteDatabaseclose();

thisfinish();

return true;

}

return superonKeyDown(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_11db";

//数据库表名

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){

//数据库没有表时创建一个

dbexecSQL(DB_CREATE);

}

//升级数据库

public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){

dbexecSQL("DROP TABLE IF EXISTS notes");

onCreate(db);

}

}

//构造函数

public MyDataBaseAdapter(Context mContext){

mContext = context;

}

//打开数据库

public void open()throws SQLException{

mDatabaseHelper = new DatabaseHelper(mContext);

mSQLiteDatabase = mDatabasehelpergetWritableDatabase();

}

//关闭数据库

public void close(){

mDatabaseHelperclose();

}

//插入一条数据

public long insertData(int num,String data){

ContentValues initialvalues = new ContentValues();

initialValuesput(KEY_NUM,num);

initialValuesput(KEY_DATA,data);

return mSQLiteDatabaseinsert(DB_TABLE,KEY_ID,initialValues);

}

//删除一条数据

public boolean deleteData(long rowId){

return mSQLiteDatabasedelete(DB_TABLE,KEY_ID+"="+rowId,null)>0;

}

//通过Cursor查询所有数据

public Cursor fetchAllData(){

return mSQLiteDatabasequery(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){

mCursormoveToFirst();

}

return mCursor;

}

//更新一条数据

public boolean updateData(long rowId,int num,String data){

ContentValues args = new ContentValues();

argsput(KEY_NUM,num);

argsput(KEY_DATA,data);

return mSQLiteDatabaseupdate(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){

superonCreate(savedInstanceState);

//创建线性布局对象

m_LinearLayout = new LinearLayout(this);

m_LinearLayoutsetOrientation

首先用jdbc把数据读取出来

再进行判断 讲 text: 进行分割

再保存 就可以实现了

我给你写一个 jdbc连接 access的类

-------------------------------------------

package access;

import javasql;

public class DAO {

/

java 连接 Access 数据库 步骤: 1打开 ACCESS 创建一个 数据库 选择路径 E:数据库名称 Access1mdb

2在该数据库内创建一个表 emp 插入一条数据 3打开控制面版--控制工具--数据源(ODBJ) 分别在 用户DSN 和 系统DSN 内添加

一个用户名称 msn 添加步骤: - 点击添加 选择 Driver do Microsoft Access (mdb) - 点 完成

d出对话框 在数据库源框内 输入 msn - 数据库项 选择 地址 E:Access1mdb - 确定 (两个步骤一样)

---------OK------------

/

private String url = "jdbc:odbc:msn";// 打开数据库源

private String str = "sunjdbcodbcJdbcOdbcDriver";

private Connection conn;

private Statement sta;

private ResultSet res;

public DAO() {

try {

ClassforName(str);

conn = DriverManagergetConnection(url);

sta = conncreateStatement();

Systemoutprintln("数据库连接成功");

} catch (ClassNotFoundException e) {

Systemoutprintln("缺少架包支持");

eprintStackTrace();

} catch (SQLException e) {

Systemoutprintln("连接错误 检查用户名密码 或 url 以及数据库是否存在");

eprintStackTrace();

}

}

public void close() {

try {

if (res != null) {

resclose();

}

if (sta != null) {

staclose();

}

if (conn != null) {

connclose();

}

} catch (SQLException e) {

Systemoutprintln("sql不能执行");

eprintStackTrace();

}

}

public ResultSet querry(String sql) {

try {

res = staexecuteQuery(sql);

} catch (SQLException e) {

Systemoutprintln("sql不能执行");

Systemoutprintln(sql);

eprintStackTrace();

}

return res;

}

public int update(String sql) {

int flag = -1;

try {

flag = staexecuteUpdate(sql);

} catch (SQLException e) {

Systemoutprintln("以下sql不能执行");

Systemoutprintln(sql);

eprintStackTrace();

}

return flag;

}

private Connection getConn() {

return conn;

}

public static void main(String[] args) {

DAO d = new DAO();

String sql = "select from emp as t ";

ResultSet res = dquerry(sql);

try {

while (resnext()) {

Systemoutprintln(resgetString(1));

}

} catch (SQLException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

/

try{

String strURL ="jdbc:odbc:msn";myds在ODBC中建的一个用户DSN

ClassforName("sunjdbcodbcJdbcOdbcDriver"); Connection

connAcce=DriverManagergetConnection(strURL); Statement

stmt=connAccecreateStatement();

ResultSet rs=stmtexecuteQuery("SELECT FROM emp");

while(rsnext()){

Systemoutprintln(rsgetString(2)); }

stmtclose(); connAcceclose(); } catch(Exception ex){

exprintStackTrace(); } }

/

}

}

-----------------------------------------

不懂的再联系

你能把你怎么把它插入数据库的那一段代码摘录出来看看吗?

---------------------------------

1

mysql 不支持bool,你可以转化为字符串0,1表示,然后在使用时手工做转换。

2

mysql 支持枚举类型。

ENUM 类型在系统内部可以存储为数字,并且从 1 开始用数字做索引。一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。

但是我本人没有使用过枚举类型。

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命令。

你那表里面存的是什么样的数据呢?就暂且假设你存储的是User 对象(含有username,pwd等字段),那么你就可以这样获得table1中所有的数据

PreparedStatement ps=conprepareStatement("select from table1");

rs=psexecuteQuery();

List<User> list=new ArrayList<User>();

if(rsnext()){

User user=new User(regetString(1),regetString(2),);

listadd(user);

}

然后你在把集合迭代出来,这是一种思路,或者如果苦里面存的是对象类型的数据,直接重写toString方法,在if语句块了直接打印usertoString亦可,这是另一种思路。反正方法多了,你自己根据需要做选择

以上就是关于java我要获取数据库信息,但是实际上不允许我直接 *** 作数据库,我该怎么办,用jdbc连接全部的内容,包括:java我要获取数据库信息,但是实际上不允许我直接 *** 作数据库,我该怎么办,用jdbc连接、Java读取access数据库的数据、java从数据库读取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9761417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存