今天很自然的在写Sql语句的时候用了Top,一开始没发现问题,因为我从数据库读出的值正好是0,而我习惯变量定义的时候也都赋值0,可是到我不要0的时候我就发现问题了。后来才知道,可爱的小sqlite竟然有不支持的sql语法。
看到某个论坛有个新手也发现了这个问题并发帖了,下面一牛人的回复是“top是哪家的关键词?sqlite家没有这词的”,哈,原来top这词是mssql里才有的~
最后还想说,数据库绝对是很重要的一块。我的基础语法很垃圾,过几天认真记录下。
Google之下的结果:
1 TOP
这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP 10 * from [index] ORDER BY indexid DESC;
但是这条SQL语句在SQLite中是无法执行的,应该改为:
SELECT * from [index] ORDER BY indexid DESC limit 0,10;
其中limit 0,10表示从第0条记录开始,往后一共读取10条
2 创建视图(Create View)
SQLite在创建多表视图的时候有一个BUG,问题如下:
CREATE VIEW watch_single AS SELECT DISTINCTwatch_item.[watchid],watch_item.[itemid] from watch_item;
上面这条SQL语 ......
今天很自然的在写Sql语句的时候用了Top,一开始没发现问题,因为我从数据库读出的值正好是0,而我习惯变量定义的时候也都赋值0,可是到我不要0的时候我就发现问题了。后来才知道,可爱的小sqlite竟然有不支持的sql语法。
看到某个论坛有个新手也发现了这个问题并发帖了,下面一牛人的回复是“top是哪家的关键词?sqlite家没有这词的”,哈,原来top这词是mssql里才有的~
最后还想说,数据库绝对是很重要的一块。我的基础语法很垃圾,过几天认真记录下。
Google之下的结果:
1 TOP
这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP 10 * from [index] ORDER BY indexid DESC;
但是这条SQL语句在SQLite中是无法执行的,应该改为:
SELECT * from [index] ORDER BY indexid DESC limit 0,10;
其中limit 0,10表示从第0条记录开始,往后一共读取10条
2 创建视图(Create View)
SQLite在创建多表视图的时候有一个BUG,问题如下:
CREATE VIEW watch_single AS SELECT DISTINCTwatch_item.[watchid],watch_item.[itemid] from watch_item;
上面这条SQL语 ......
本文以数据库中的数据表UserInfo为实例展示数据库表的创建及数据记录的录入。
#!/bin/sh
#variables definition
#database location
db=/conf/db
#
#create table userInfo
#name: User name
#passwd: Password
#Privilege: User privilege -- Administrator:0 Operator:1
#
echo "create table UserInfo(name varchar(30) not null primary key, passwd varchar(8) not null, privilege int not null);" \
| /usr/local/bin/sqlite3 $db
echo "insert into UserInfo values('admin', 'access', 0);" | /usr/local/bin/sqlite3 $db
echo "insert into UserInfo values('user', 'access', 1);" | /usr/local/bin/sqlite3 $db ......
本文以数据库中的数据表UserInfo为实例展示数据库表的创建及数据记录的录入。
#!/bin/sh
#variables definition
#database location
db=/conf/db
#
#create table userInfo
#name: User name
#passwd: Password
#Privilege: User privilege -- Administrator:0 Operator:1
#
echo "create table UserInfo(name varchar(30) not null primary key, passwd varchar(8) not null, privilege int not null);" \
| /usr/local/bin/sqlite3 $db
echo "insert into UserInfo values('admin', 'access', 0);" | /usr/local/bin/sqlite3 $db
echo "insert into UserInfo values('user', 'access', 1);" | /usr/local/bin/sqlite3 $db ......
//搜集整理了一下网上的代码.找了半天居然找不到一条插入语句.好郁闷的
//感觉速度还可以.小文件.很多小应用程序在用这个数据库
//SQLite使用办法.直接COPYDLL文件System.Data.SQLite.DLL到应用程序DEBUG目录下。 然后在项目中添加引用,找到这个文件即可
//添加引用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Data.SQLite;
private static string FavoriteDbPath = System.Environment.CurrentDirectory + "\\Favorite.db";
private bool CreateSQLiteDb()
{
try
{
System.Data.SQLite.SQLiteConnection.CreateFile(FavoriteDbPath);
& ......
package
{
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.errors.SQLError;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import flash.filesystem.File;
import mx.collections.ArrayCollection;
public class DBUtil
{
/**
* 数据库操作类别
**/
private const typeArr:Array = ['select','insert','update','delete','create','alter','drop'];
/**
* 连接
**/
private var conn:SQLConnection;
/**
* 声明
**/
private var stmt:SQLStatement;
/**
* 结果集合
**/
private var rsAC:ArrayCollection;
public function DBUtil()
{
}
/**
* 获得连接
**/
private function getConn():SQLConnection
{
if ......
今天遇到了麻烦:
用Eclipse编译python向sqlite数据库插入数据总是提示编码的问题,我设置了Eclipse的workspace用utf-8编码还是不行
但是用Eclipse写的程序保存再用IDLE打开却能编译,奇怪了
我考虑到可能是配置的原因,找找遍了所有的配置,都没有问题,包括工程文件
最后我用xvi32打开两个相同的程序(Eclipse和IDLE分别编写的)发现了问题
原来Eclipse保存的文件虽然是utf-8编码但是在文件的头部不加\ff\bb\bf,而IDLE没有标识也能识别utf-8(默认的嘛)
而eclipse却不能(也许是我的Eclipse的原因~~!)
再一个用IDLE写的自动就加标识了,就像是用记事本utf-8保存一样 ......
今天遇到了麻烦:
用Eclipse编译python向sqlite数据库插入数据总是提示编码的问题,我设置了Eclipse的workspace用utf-8编码还是不行
但是用Eclipse写的程序保存再用IDLE打开却能编译,奇怪了
我考虑到可能是配置的原因,找找遍了所有的配置,都没有问题,包括工程文件
最后我用xvi32打开两个相同的程序(Eclipse和IDLE分别编写的)发现了问题
原来Eclipse保存的文件虽然是utf-8编码但是在文件的头部不加\ff\bb\bf,而IDLE没有标识也能识别utf-8(默认的嘛)
而eclipse却不能(也许是我的Eclipse的原因~~!)
再一个用IDLE写的自动就加标识了,就像是用记事本utf-8保存一样 ......
在SQLite on BlackBerry上,JDBC访问数据库,缺省是以UTF-8保存数据到数据库里面的,每个中文通常是3个字节保存到数据库上面的。
例子代码参考:
BlackBerry sample - SQLiteDemo。
注意:在插入中文的时候,请使用Statement.bind指令,在我的测试中,可以很好的保存中文数据。读取的时候只需要使用ResultSet.getString()就可以了。
而直接使用拼接好的sql insert语句插入数据,可能会有插入中文乱码问题。
Statement statement = _db.createStatement("INSERT INTO Category VALUES(null, ?)");
statement.prepare();
statement.bind(1, name);
statement.execu ......