
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从数据库读取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)