1、先给m添加一个上次更改的时间字段,比如change_at,数据类弄推荐int或者timespan,用int会比较好,因为可以用php的time()来取时间对比。
2、定义一个函数get_m(),每次要取m值的时候都通过这个函数取。在取值之前对m进行 *** 作:
function get_m()
{
$now = time()
$change_at = get_change_at()//取得change_at的值,函数自己去写。
$m = read_m()//取得数据库内的真实数值
$time_span = $now - $change_at
//没有达到更新条件,直接返回;
if ($time_span <180)
return $m
$m += floor($time_span / 180)
$change_at += (floor($time_span/180) * 180)
//将新的m和change_at写入数据库
save_m($m,$change_at)
return $m
}
其中的几个函数read_m(),get_change_at(),save_m()根据具体的数据库结构写功能,也可以不要用函数直接把数据库 *** 作代码写在那边。
这样就能保证每次程序取到的值和数据库自动更改的情况下是一样的。
在QT的widget中用tableview显示sqlite数据库表中的内容。假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据。
首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码:
QsqDatabase db = QsqlDatabase::addDatabase("QSQLITE")
db.setDatabaseName("test.db")
if(!db.open())
{
//错误处理
}
static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview)
model->setQuery(QString("select * from table"))
model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号"))
model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"))
model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄"))
ui->tableview->setModel(model)
db->close()
这样之后,table表里的内容就会显示到tableview中了。
兄弟。。服务器是不能 *** 作数据库的,只有php才能 *** 作数据库。。应该是服务器定期执行某个php程序,这个php程序刷新数据库。。linux下面可以用crontab命令,把你的php程序写在一个文件里面,然后用crontab命令定期调用。。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)