全飞秒激光后多久可以半飞秒上班用电脑怎么办工作

10:48 提问
用where条件查询SQLite数据库
在数据库中用string作为where条件查询数据库,程序就会关闭。如果换成数字作为条件,就没问题。帮我看一下代码:
public ArrayList&Contact& getAvailableList()
// TODO Auto-generated method stub
ArrayList&Contact& results = new ArrayList&Contact&();
String[] columns = new String[]{KEY_NAME, KEY_NUMBER, KEY_STATUS};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"=available" , null, null, null, KEY_NAME);
String sName = "";
String sNum = "";
String status = "";
int iName = c.getColumnIndex(KEY_NAME);
int iNumber = c.getColumnIndex(KEY_NUMBER);
int iStatus = c.getColumnIndex(KEY_STATUS);
for(c.moveToFirst(); ! c.isAfterLast(); c.moveToNext())
contact = new Contact();
sName += c.getString(iName);
sNum += c.getString(iNumber);
status += c.getString(iStatus);
contact.setName(sName);
//contact.setPhoneNumber(sNum);
contact.setPhoneNumber("0".concat(sNum));
contact.setStatus(status);
results.add(contact);
sName = "";
sNum = "";
status = "";
按赞数排序
在SQL中要把字符安用括号括起来的。像这样:
添加这个 v
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"='available'",
null, null, null, KEY_NAME);
如果你用动态数据,可以用selectionArgs参数:
String status = "available";
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_STATUS +"=?",
new String[] {status}, null, null, KEY_NAME);
这个方法可以保护你不受SQL注入的影响。
楼主写错了,你可能没弄明白这个方法中的参数含义;
你可以这样写试试:
String[] columns = { KEY_NAME, KEY_NUMBER, KEY_STATUS };
String selection = KEY_STATUS + "=?";
String[] selectionArgs = { "available" };
String orderBy = KEY_NAME + " DESC"; // OR ASC
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, selection, selectionArgs, null, null, orderBy);
这样才能查到数据;
解释一下,query方法在执行中,会被Android自动解析为一条标准的SQL,即:
KEY_NAME, KEY_NUMBER, KEY_STATUS
DATABASE_TABLE
WHERE KEY_STATUS = 'available'
ORDER BY KEY_NAME DESC;
把(出错时)执行前的sql语句打印出来,可能出错了
我也没看到where啊,关闭会提示出错log的,怎么说的
其他相似问题SQLite 教程
SQLite Select 语句
SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
SQLite 的 SELECT 语句的基本语法如下:
SELECT column1, column2, columnN FROM table_
在这里,column1, column2...是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:
SELECT * FROM table_
假设 COMPANY 表有以下记录:
----------
----------
----------
----------
----------
California
South-Hall
下面是一个实例,使用 SELECT 语句获取并显示所有这些记录。在这里,前三个命令被用来设置正确格式化的输出。
sqlite&.header on
sqlite&.mode column
sqlite& SELECT * FROM COMPANY;
最后,将得到以下的结果:
----------
----------
----------
----------
----------
California
South-Hall
如果只想获取 COMPANY 表中指定的字段,则使用下面的查询:
sqlite& SELECT ID, NAME, SALARY FROM COMPANY;
上面的查询会产生以下结果:
----------
----------
----------
有时,由于要显示的列的默认宽度导致 .mode column,这种情况下,输出被截断。此时,您可以使用 .width num, num.... 命令设置显示列的宽度,如下所示:
sqlite&.width 10, 20, 10
sqlite&SELECT * FROM COMPANY;
上面的 .width 命令设置第一列的宽度为 10,第二列的宽度为 20,第三列的宽度为 10。因此上述 SELECT 语句将得到以下结果:
----------
--------------------
----------
----------
----------
California
South-Hall
因为所有的点命令只在 SQLite 提示符中可用,所以当您进行带有 SQLite 的编程时,您要使用下面的带有 sqlite_master 表的 SELECT 语句来列出所有在数据库中创建的表:
sqlite& SELECT tbl_name FROM sqlite_master WHERE type = 'table';
假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:
----------
您可以列出关于 COMPANY 表的完整信息,如下所示:
sqlite& SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';
假设在 testDB.db 中已经存在唯一的 COMPANY 表,则将产生以下结果:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY
反馈内容(*必填)
截图标记颜色
联系方式(邮箱)
联系邮箱:
投稿页面:
记住登录状态
重复输入密码使用SQLite - 廖雪峰的官方网站
使用SQLite
SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。
Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。
在使用SQLite前,我们先要搞清楚几个概念:
表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。
要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;
连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。
Python定义了一套操作数据库的API接口,任何数据库要连接到Python,只需要提供符合Python标准的数据库驱动即可。
由于SQLite的驱动内置在Python标准库中,所以我们可以直接来操作SQLite数据库。
我们在Python交互式命令行实践一下:
# 导入SQLite驱动:
&&& import sqlite3
# 连接到SQLite数据库
# 数据库文件是test.db
# 如果文件不存在,会自动在当前目录创建:
&&& conn = sqlite3.connect('test.db')
# 创建一个Cursor:
&&& cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
&&& cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
&sqlite3.Cursor object at 0x10f8aa260&
# 继续执行一条SQL语句,插入一条记录:
&&& cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
&sqlite3.Cursor object at 0x10f8aa260&
# 通过rowcount获得插入的行数:
&&& cursor.rowcount
# 关闭Cursor:
&&& cursor.close()
# 提交事务:
# 关闭Connection:
&&& conn.close()
我们再试试查询记录:
&&& conn = sqlite3.connect('test.db')
&&& cursor = conn.cursor()
# 执行查询语句:
&&& cursor.execute('select * from user where id=?', ('1',))
&sqlite3.Cursor object at 0x10f8aa340&
# 获得查询结果集:
&&& values = cursor.fetchall()
&&& values
[(u'1', u'Michael')]
&&& cursor.close()
&&& conn.close()
使用Python的DB-API时,只要搞清楚Connection和Cursor对象,打开后一定记得关闭,就可以放心地使用。
使用Cursor对象执行insert,update,delete语句时,执行结果由rowcount返回影响的行数,就可以拿到执行结果。
使用Cursor对象执行select语句时,通过featchall()可以拿到结果集。结果集是一个list,每个元素都是一个tuple,对应一行记录。
如果SQL语句带有参数,那么需要把参数按照位置传递给execute()方法,有几个?占位符就必须对应几个参数,例如:
cursor.execute('select * from user where name=? and pwd=?', ('abc', ';))
SQLite支持常见的标准SQL语句以及几种常见的数据类型。具体文档请参阅SQLite官方网站。
在Python中操作数据库时,要先导入数据库对应的驱动,然后,通过Connection对象和Cursor对象操作数据。
要确保打开的Connection对象和Cursor对象都正确地被关闭,否则,资源就会泄露。
如何才能确保出错的情况下也关闭掉Connection对象和Cursor对象呢?请回忆try:...except:...finally:...的用法。
Make a Comment
Sign In to Make a Comment
You can sign in directly without register:
You need authorize to allow connect to your social passport for the first time.
WARNING: You are using an old browser that does not support HTML5.
Please choose a modern browser ( /
/ ) to get a good experience.& & sqlite回传函数相关说了3种基本方法:callback,gettable和预处理stmt方法& & 下面给出测试代码和测试用数据库,代码如下#include
#include #include "sqlite3.h" ////typedef int (*sqlite3_callback)( //
void* data,
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程

我要回帖

更多关于 半飞秒上班用电脑怎么办 的文章

 

随机推荐