ruby&sqlite的例子

例子1

require 'sqlite'

db = SQLite::Database.new( "test.db" )

sql = <<SQL
  drop table the_table;

  create table the_table (
    a varchar2(30),
    b varchar2(30)
  );

  insert into the_table values ( 'one', 'two' );
  insert into the_table values ( 'three', 'four' );
  insert into the_table values ( 'five', 'six' );
SQL

db.execute_batch( sql )

db.results_as_hash = true
db.execute( "select * from the_table" ) do |row|
  print row['a'], ',  ', row['b']
  puts
end


例子2

require 'sqlite'
require 'net/http'

def accessNet(stat, url)
  res = Net::HTTP.get(URI.parse(URI.escape(url)))
  res.gsub(/<[^>]*>/m, ' ').gsub(/[\r\n]/m, ' ').gsub(/'/m, '"').scan(/([a-zA-Z-]+)\s/).each do |v|
    v = v.to_s.downcase
    stat[v] = (stat[v]==nil) ? 1 : stat[v]+1
  end
end

def saveData(db, stat)
  sql, i = '', 0
  stat.each do |k, v|
    i = i+1
    sql = "#{sql}insert into the_table values ('#{k}', #{v});"
    if(i%1000==0)
      db.transaction do |db| 
        db.execute_batch( sql )
      end
      sql=''
    end
  end
  db.transaction do |db| 
    db.execute_batch( sql ) if(sql!='')
  end
end


def doinit(db)
    sql = <<SQL
      drop table the_table;
      create table the_table (
        key varchar(300),
        val int
      );
SQL
    db.execute_batch( sql )
end

def printInfo(db)
    # do the select
    db.results_as_hash = true
    db.execute( "select * from the_table t order by t.val desc" ) do |row|
      puts "#{row[0]}, #{row[1]}"
    end
    rows = db.execute( "select count(*) from the_table" )
    p rows
end


db = SQLite::Database.new( "test.db" )

doinit db
stat = {}
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/12/content_13102444.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/12/content_13099183.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/13/content_13106532.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/14/content_13107273.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/12/content_13099653.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/14/content_13107262.htm')
accessNet(stat, 'http://www.chinadaily.com.cn/world/2011-08/15/content_13110160.htm')
saveData db, stat
printInfo db




相关的软件下载:

sqlite : http://www.sqlite.org/sqlitedll-2_8_17.zip

ruby gem : http://rubyforge.org/frs/?group_id=254&release_id=1522

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite是一款轻型开源的关系型数据库,在嵌入式系统、移动应用等领域广受欢迎。本文将介绍如何使用C语言编写SQLite程序,并给出一个简单的示例。 在编写SQLite程序前,需要先从官网http://www.sqlite.org/ 下载SQLite库文件,然后在编译时添加链接选项,例如在Linux系统下可以使用以下命令链接库文件: gcc -o test test.c -lsqlite3 在编写程序时,需要包含sqlite3.h头文件,同时使用sqlite3_open函数打开数据库连接。然后可以使用sqlite3_exec函数执行SQL语句,并通过回调函数获取执行结果。 下面是一个简单的示例程序,实现了创建数据库、创建表、插入数据、查询数据等基本操作: #include <stdio.h> #include <sqlite3.h> static int callback(void *data, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++){ printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); } printf("\n"); return 0; } int main(int argc, char* argv[]) { sqlite3 *db; char *zErrMsg = 0; int rc; char *sql; /* Open database */ rc = sqlite3_open("test.db", &db); if( rc ) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return(0); } else { fprintf(stdout, "Opened database successfully\n"); } /* Create SQL statement */ sql = "CREATE TABLE COMPANY(" \ "ID INT PRIMARY KEY NOT NULL," \ "NAME TEXT NOT NULL," \ "AGE INT NOT NULL," \ "ADDRESS CHAR(50)," \ "SALARY REAL );"; /* Execute SQL statement */ rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } else { fprintf(stdout, "Table created successfully\n"); } /* Insert data into table */ sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00 );"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } else { fprintf(stdout, "Records created successfully\n"); } /* Select data from table */ sql = "SELECT * from COMPANY"; rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg); if( rc != SQLITE_OK ){ fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); } /* Close database */ sqlite3_close(db); return 0; } 该程序首先使用sqlite3_open函数打开名为test.db的数据库连接,然后使用sqlite3_exec函数执行SQL语句创建名为COMPANY的表,接着向该表中插入数据,最后查询整张表数据并输出。在执行SQL语句时,该程序还使用了一个回调函数callback来处理查询结果。 以上是一个简单的SQLite C语言示例,使用SQLite数据库可以为嵌入式系统和移动应用提供高效的存储支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值