android访问数据库SQL我想查询已建立数据库的其中一行并显示在当前...

num&&value
显示为&这样
1&q&2&w&3&e
回复讨论(解决方案)
显示为&这样
1&q&2&w&3&e
这个几列呢
显示为&这样
1&q&2&w&3&e
这个几列呢
一行六列&&原来是三行
如果是四行呢?
如果是四行呢?
那就变成8列&只要把所有行平铺到一行
建议在程序上处理,遍历每行成一行,因为你到最后应该也是用于显示在前端程序上吧
实在要用SQL,比较麻烦,因为了解到你的需求是要能适应动态的行数的
类似以下吧
DECLARE&@SQL&VARCHAR(8000)
DECLARE&@TABLEJOIN&VARCHAR(8000)
SET&@SQL='SELECT&T1.name,T1.value'
SET&@TABLEJOIN='&FROM&#T&T1'
SELECT&@SQL=@SQL+',T'+CAST(RN&AS&VARCHAR(10))+'.name,T'+CAST(RN&AS&VARCHAR(10))+'.value'
,@TABLEJOIN=@TABLEJOIN+'&LEFT&JOIN&#T&T'+CAST(RN&AS&VARCHAR(10))+'&ON&T'+CAST(RN&AS&VARCHAR(10))+'.RN='+CAST(RN&AS&VARCHAR(10))
FROM&#T&WHERE&RN&1
SET&@SQL=@SQL+@TABLEJOIN+'&WHERE&T1.RN=1'
PRINT&@SQL
EXEC(@SQL)
for&xml&path
建议在程序上处理,遍历每行成一行,因为你到最后应该也是用于显示在前端程序上吧
实在要用SQL,比较麻烦,因为了解到你的需求是要能适应动态的行数的
类似以下吧
DECLARE&@SQL&VARCHAR(8000)
DECLARE&@TABLEJOIN&VARCHAR(8000)
SET&@SQL='SELECT&T1.name,T1.value'
SET&@TABLEJOIN='&FROM&#T&T1'
SELECT&@SQL=@SQL+',T'+CAST(RN&AS&VARCHAR(10))+'.name,T'+CAST(RN&AS&VARCHAR(10))+'.value'
,@TABLEJOIN=@TABLEJOIN+'&LEFT&JOIN&#T&T'+CAST(RN&AS&VARCHAR(10))+'&ON&T'+CAST(RN&AS&VARCHAR(10))+'.RN='+CAST(RN&AS&VARCHAR(10))
FROM&#T&WHERE&RN&1
SET&@SQL=@SQL+@TABLEJOIN+'&WHERE&T1.RN=1'
PRINT&@SQL
EXEC(@SQL)
3q&还是在查询后处理方便点android访问SQL数据库的问题_百度知道
android访问SQL数据库的问题
指定内容长度
&#47,包括Post和G
outStream.setDoOutput (true);Content-Length&SOAPAction&
outStream,但就是inputstream这里出现异常:webservice里是有数据的;text&#47, &/指定该链接是否只用caches指定服务器地址
HttpURLConnection con = (HttpURLConnection) url,我在网上搜过,可以解决中文乱码问题发送数据
OutputStream outStream = con.close();设置(发送的)内容类型
con.setConnectTimeout (6000);指定发送方法名; &#47.setUseCaches (false).openConnection();/Content-Type&quot, soapAction);;).flush(););
outStream.4的;///charset=utf-8&这里总是抛出不知道的异常;/ /&#47.length)); &#47,虚拟器是安卓4;&#47, S /.write (bytes);/
catch (Exception e)
&#47。打开链接
byte[] bytes = requestD异常到这里捕捉不到
return null!用的android studio .setRequestProperty (&quot.getBytes (&/&#47.setRequestProperty (&utf-8&quot,
return inputStream.printStackTrace(););POST&
/ /指定soapAction
con.getOutputStream();&#47。outStream等都可以运行通过;指定该链接是否可以输入
///指定编码格式,可以返回xml的数据.setDoInput (true)try
URL url = new URL (ServerUrl),有的说是android本身的一个 // /
}先说明一下; /指定该链接是否可以输出
con,但是怎么解决呢; &#47.setRequestProperty (&quot.getInputStream().setRequestMethod (&获取数据
InputStream inputStream = 设置超时时间 //; /&#47.valueOf(bytes
提问者采纳
为什么数据不放到参数里面。竟然是用post传递的参数没看明白你的发送数据有什么用,你都不说,都没法答,还要重新发送。另外到底是抛出什么异常
提问者评价
其他类似问题
sql数据库的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页面导航:
→ 正文内容 Android保存数据到SQL数据库
Android学习笔记-保存数据到SQL数据库中(Saving Data in SQL Databases)
这篇文章主要介绍了Android学习笔记-保存数据到SQL数据库中的(Saving Data in SQL Databases)
1.使用SQL Helper创建数据库
2.数据的增删查改(PRDU:Put、Read、Delete、Update)
上篇文章学习了,今天学习的是保存数据到SQL数据库中。相信大家对数据库都不陌生。对于大量重复的,有特定结构的数据的保存,用 SQL数据库 来保存是最理想不过了。
下面将用一个关于联系人的数据库Demo来具体学习。
具体知识:
1.定义Contract类
在创建SQL数据库之前,要创建Contract类。那什么是Contract类呢?
Contract Class的定义:
&&& Contract Class,又可以叫做Companion Class。
&&& Android Developer的帮助文档是这么说的:
&& & A contract class is a container for constants that define names for URIs,
&&&& tables, and columns. The contract class allows you to use the same constants
&&&& across all the other classes in the same package. This lets you change a
&&&& column name in one place and have it propagate throughout your code.&
&&&& Contact 类是定义URI、表、列的名字的容器。这个类允许我们在同一包的不同类下使用相同的常量。
&&&& 我们在一处修改了列名,同时传播到我们代码的每个地方。
package com.example.
//Contract类
public class Contact {
&&& String _
&&& String _phone_
&&& public Contact(){
&&& public Contact(int id, String name, String _phone_number){
&&&&&&& this._id =
&&&&&&& this._name =
&&&&&&& this._phone_number = _phone_
&&& public Contact(String name, String _phone_number){
&&&&&&& this._name =
&&&&&&& this._phone_number = _phone_
&&& public int getID(){
&&&&&&& return this._
&&& public void setID(int id){
&&&&&&& this._id =
&&& public String getName(){
&&&&&&& return this._
&&& public void setName(String name){
&&&&&&& this._name =
&&& public String getPhoneNumber(){
&&&&&&& return this._phone_
&&& public void setPhoneNumber(String phone_number){
&&&&&&& this._phone_number = phone_
2.使用SQLHelper创建数据库
&&&&&&&&& 就像保存文件在内部存储一样,Android在私有的应用存储空间存储我们的数据库,这样就保证我们的数据是安全的。不能被其他应用访问到。
在设备上存储的数据库保存在:
&&&&&&&&&&&& /data/data/&package_name&/databases目录下
为了使用SQLiteOpenHelper,我们需要创建一个重写了onCreate(),onUpgrade()和onOpen()回调方法的子类。
3.数据的增删改查
增:传ContentValue值到insert()方法。
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());
db.insert(TABLE_CONTACTS, null, values);
db.close();
删:delete()方法
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
&&&&&&& new String[] { String.valueOf(contact.getID()) });
db.close();
&改:update()方法
& 代码如下:
&SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
&&&&&&&&& ew String[] { String.valueOf(contact.getID()) });
查:query()方法
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
&&&&&&&&&&&&&&& KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
&&&&&&&&&&&&&&& new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
&&&&&&&&&&&&&&& cursor.getString(1), cursor.getString(2));
完整DatabaseHelper代码如下:
package com.example.
import java.util.ArrayL
import java.util.L
import android.content.ContentV
import android.content.C
import android.database.C
import android.database.sqlite.SQLiteD
import android.database.sqlite.SQLiteOpenH
public class DatabaseHelper extends SQLiteOpenHelper {
&&& // 数据库版本
&&& private static final int DATABASE_VERSION = 1;
&&& // 数据库名
&&& private static final String DATABASE_NAME = "contactsManager";
&&& //Contact表名
&&& private static final String TABLE_CONTACTS = "contacts";
&&& //Contact表的列名
&&& private static final String KEY_ID = "id";
&&& private static final String KEY_NAME = "name";
&&& private static final String KEY_PH_NO = "phone_number";
&&& public DatabaseHelper(Context context) {
&&&&&&& super(context, DATABASE_NAME, null, DATABASE_VERSION);
&&& // 创建表
&&& @Override
&&& public void onCreate(SQLiteDatabase db) {
&&&&&&& String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
&&&&&&&&&&&&&&& + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
&&&&&&&&&&&&&&& + KEY_PH_NO + " TEXT" + ")";
&&&&&&& db.execSQL(CREATE_CONTACTS_TABLE);
&&& // 更新表
&&& @Override
&&& public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
&&&&&&& // 删除旧表
&&&&&&& db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
&&&&&&& //再次创建表
&&&&&&& onCreate(db);
&&&& *增删改查操作
&&& // 增加新的联系人
&&& void addContact(Contact contact) {
&&&&&&& SQLiteDatabase db = this.getWritableDatabase();
&&&&&&& ContentValues values = new ContentValues();
&&&&&&& values.put(KEY_NAME, contact.getName());
&&&&&&& values.put(KEY_PH_NO, contact.getPhoneNumber());
&&&&&&& // 插入行
&&&&&&& db.insert(TABLE_CONTACTS, null, values);
&&&&&&& db.close(); // 关闭数据库的连接
&&& // 获取联系人
&&& Contact getContact(int id) {
&&&&&&& SQLiteDatabase db = this.getReadableDatabase();
&&&&&&& Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
&&&&&&&&&&&&&&& KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
&&&&&&&&&&&&&&& new String[] { String.valueOf(id) }, null, null, null, null);
&&&&&&& if (cursor != null)
&&&&&&&&&&& cursor.moveToFirst();
&&&&&&& Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
&&&&&&&&&&&&&&& cursor.getString(1), cursor.getString(2));
&&& // 获取所有联系人
&&& public List&Contact& getAllContacts() {
&&&&&&& List&Contact& contactList = new ArrayList&Contact&();
&&&&&&& // Select All Query
&&&&&&& String selectQuery = "SELECT& * FROM " + TABLE_CONTACTS;
&&&&&&& SQLiteDatabase db = this.getWritableDatabase();
&&&&&&& Cursor cursor = db.rawQuery(selectQuery, null);
&&&&&&& if (cursor.moveToFirst()) {
&&&&&&&&&&& do {
&&&&&&&&&&&&&&& Contact contact = new Contact();
&&&&&&&&&&&&&&& contact.setID(Integer.parseInt(cursor.getString(0)));
&&&&&&&&&&&&&&& contact.setName(cursor.getString(1));
&&&&&&&&&&&&&&& contact.setPhoneNumber(cursor.getString(2));
&&&&&&&&&&&&&&& contactList.add(contact);
&&&&&&&&&&& } while (cursor.moveToNext());
&&&&&&& return contactL
&&& // 更新单个联系人
&&& public int updateContact(Contact contact) {
&&&&&&& SQLiteDatabase db = this.getWritableDatabase();
&&&&&&& ContentValues values = new ContentValues();
&&&&&&& values.put(KEY_NAME, contact.getName());
&&&&&&& values.put(KEY_PH_NO, contact.getPhoneNumber());
&&&&&&& //更新行
&&&&&&& return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
&&&&&&&&&&&&&&& new String[] { String.valueOf(contact.getID()) });
&&& // 删除单个联系人
&&& public void deleteContact(Contact contact) {
&&&&&&& SQLiteDatabase db = this.getWritableDatabase();
&&&&&&& db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
&&&&&&&&&&&&&&& new String[] { String.valueOf(contact.getID()) });
&&&&&&& db.close();
&&& // 获取联系人数量
&&& public int getContactsCount() {
&&&&&&& String countQuery = "SELECT& * FROM " + TABLE_CONTACTS;
&&&&&&& SQLiteDatabase db = this.getReadableDatabase();
&&&&&&& Cursor cursor = db.rawQuery(countQuery, null);
&&&&&&& cursor.close();
&&&&&&& return cursor.getCount();
还有一些代码不是本次学习的重点,就不贴出来了。有需要的留言找我要。
&Demo运行效果图:
上一篇:下一篇:
最 近 更 新
热 点 排 行
12345678910求助: android:ListView从数据库中一条一条读取数据,结果只在第一行显示,后一条数据会把前一条数据覆盖掉。以下是代码,请问如何修改呢?
[问题点数:100分]
求助: android:ListView从数据库中一条一条读取数据,结果只在第一行显示,后一条数据会把前一条数据覆盖掉。以下是代码,请问如何修改呢?
[问题点数:100分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年8月 移动开发大版内专家分月排行榜第三
2014年8月 移动开发大版内专家分月排行榜第三
2014年8月 移动开发大版内专家分月排行榜第三
2014年8月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。Android SqlLite数据库的创建、增、删、改、查、使用事务 - jxgxy - 博客园
随笔 - 260, 文章 - 0, 评论 - 62, 引用 - 1
压缩包中,Android 2.1 调试通过。&&

我要回帖

更多关于 android访问数据库 的文章

 

随机推荐