java我要获取数据库信息,但是实际上不允许我直接操作数据库,我该怎么办,用jdbc连接
<%@pageimport="Lucsky.*"%>%@pageimport="javax.sql.rowset.CachedRowSet"%这是怎么连接数据库的Stri...
<%@page import="Lucsky.*" %>
%@page import="javax.sql.rowset.CachedRowSet" %
这是怎么连接数据库的
String sql = "select msgId,playerId,name,msgContent,msgTime,msgState,gmId,opName,rpyContent,rpyTime from XkxGmMsg as xg left join XkxPlayer as xp on xg.playerId = xp.id where msgId > " + msgId + " limit " + 50;
CachedRowSet rs = Lucsky.Db.CreateBySource("java:comp/env/jdbc/Xkx2").ExecuteQuery(sql); 展开
%@page import="javax.sql.rowset.CachedRowSet" %
这是怎么连接数据库的
String sql = "select msgId,playerId,name,msgContent,msgTime,msgState,gmId,opName,rpyContent,rpyTime from XkxGmMsg as xg left join XkxPlayer as xp on xg.playerId = xp.id where msgId > " + msgId + " limit " + 50;
CachedRowSet rs = Lucsky.Db.CreateBySource("java:comp/env/jdbc/Xkx2").ExecuteQuery(sql); 展开
5个回答
展开全部
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
在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
展开全部
如果不允许你修改数据库的话,可以再数据库中新建一个用户,只授权查看数据
然后连接数据库的时候用新建的用户连接就可以看
j2ee语言不太精通啊,不过大体思想是这样,希望有帮助~~
然后连接数据库的时候用新建的用户连接就可以看
j2ee语言不太精通啊,不过大体思想是这样,希望有帮助~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请走java后端 view —— controller ——service ——Dao ——数据库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-12-03
展开全部
这不是要数据源么,写个jsp的查询就好了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据库用户只给查看权限
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询