golang作为server向android提供数据服务
中间交换的数据是json ,后台数据库服务器是sqlserver2012
android通过post或者get方式访问
如get方式http://192.168.255.13:7080/tblFileList?tblFileList2_Title_search1=t01
package main import (
"time"
"log"
"net/http"
"os"
_ "code.google.com/p/odbc"
"database/sql"
"fmt"
"encoding/json"
) //http://192.168.255.13:7080/tblFileList?tblFileList2_Title_search1=t01 func get_tblFileList(w http.ResponseWriter, r *http.Request) { log.Print(r.RequestURI)
tblFileList2_Title_search1 := r.FormValue("tblFileList2_Title_search1")
tblFileList2_Title_search2 := r.FormValue("tblFileList2_Title_search2") fmt.Println("参数:",tblFileList2_Title_search1,tblFileList2_Title_search2)
list:= getData(tblFileList2_Title_search1,tblFileList2_Title_search2)
body, err := json.Marshal(list)
if err == nil{
w.Write(body)
}else{
w.Write([]byte("error"))
} } func login(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("token=123"))
}
func main() { http.HandleFunc("/tblFileList", get_tblFileList)
http.HandleFunc("/login", login) log.Println("Start serving on port 7080") err := http.ListenAndServe(":7080", nil)
if err != nil{
fmt.Println(err)
} os.Exit(0)
} func getData(filter1 string ,filter2 string) []tblFileList {
conn, err := sql.Open("odbc", "driver={SQL Server Native Client 11.0};server=test;database=db1;uid=sa;pwd=sa1234;")
if err != nil {
fmt.Println("Connecting Error")
return nil
}
defer conn.Close()
filter_where :="1=1 "
if filter1!=""{
filter_where += " and title like '" + filter1 + "%'"
}
if filter2!=""{
filter_where += " and title like '%" + filter2 + "%'"
} zsql :=`select
Title,
ReadCount,
LastReadUser,
isnull(LastReadTime,cast('1900-01-01' as datetime)) as LastReadTime
from tblFileList where ` + filter_where
log.Println(zsql)
stmt, err := conn.Prepare(zsql)
if err != nil {
fmt.Println("Query Error", err)
return nil
}
defer stmt.Close()
row, err := stmt.Query()
if err != nil {
fmt.Println("Query Error", err)
return nil
}
defer row.Close() rowlist :=[]tblFileList{}
for row.Next() {
var Title string
var ReadCount int
var LastReadUser string
var LastReadTime time.Time
if err := row.Scan(&Title, &ReadCount, &LastReadUser, &LastReadTime); err == nil {
//fmt.Println(Title, ReadCount,LastReadUser,LastReadTime)
var detail tblFileList detail.Title = Title
detail.ReadCount = ReadCount
detail.LastReadUser = LastReadUser
detail.LastReadTime = LastReadTime
if err != nil {
panic(err.Error())
}
rowlist = append(rowlist,detail,) } else {
fmt.Println("data Error", err)
}
} fmt.Printf("%s\n", "finish" ,len(rowlist))
return rowlist;
} type tblFileList struct {
Title string `json:"Title"`
ReadCount int `json:"ReadCount"`
LastReadUser string `json:"LastReadUser"`
LastReadTime time.Time `json:"LastReadTime"`
}
golang作为server向android提供数据服务的更多相关文章
- ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务
1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...
- 【GoLang】golang HTTP GET/POST JSON的服务端、客户端示例,包含序列化、反序列化
服务端代码示例: package main import ( "encoding/json" "fmt" "io/ioutil" " ...
- Android 网络服务介绍
1. 介绍 Android网络服务主要包括如下四个部分 - ConnectivityService: 提供数据连接管理服务,包括移动数据.WIFI.以太网等 - NetworkPolicyManage ...
- Atitit Server Side Include ssi服务端包含规范 csi esi
Atitit Server Side Include ssi服务端包含规范 csi esi 一.CSI (Client Side Includes) 1 1.1. 客户端包含1 1.2. Ang ...
- ArcGIS Server新建主题图服务的步骤
ArcGIS Server新建主题图服务的步骤: 1.修改数据库模型图(PowerDesigner) 2.修改lygis.gdb文件数据库(发布时可以快速把表结构从gdb数据库拷贝到客户服务器的SDE ...
- 3D语音天气球(源码分享)——在Unity中使用Android语音服务
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...
- 以Server模式启动Derby服务竟然抛套接字权限异常
以Server模式启动Derby服务竟然抛套接字权限异常:access denied ("java.net.SocketPermission" "localhost:15 ...
- OpenLayers调用arcgis server发布的地图服务
有两种方式可以调用arcgis server发布的地图服务,一种是rest,一种是wms. 地图的投影为900913,arcgis server为10.0版本,地图服务的空间参考为3857. 与 ...
- OpenLayers调用ArcGIS Server发布的WFS服务
OpenLayers调用ArcGIS Server发布的WFS服务 原创: 蔡建良 2013-08-20 一. 开发环境 1) Openlayers2.13+arcgis server9.3 2) W ...
随机推荐
- WINCE6.0组件选择说明
WINCE6.0组件选择说明 图1 RAS/PPP组件前面的√标识表示我们手动选择,TAPI2.0前面的■标识表示选组件时根据依赖关系自动选择的,PPPoE前面的□标识组件没有选择.
- change the walltime for currently running PBS job (qalter pbs)
qalter jobid -l walltime=X e.g.qalter 377470.manager -l walltime=2222:00:00qalter: Unauthorized Requ ...
- POSTMAN中各种请求方式的区别
1.form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件 ...
- Javascript this指针
Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象. 前言 Javascript是一门基于对象的动态语言,也就是说,所有东西都是对 ...
- Oracle 怎么让id自增加
--自增长序列 create table test( tid int not null, tname ), tsex ), tbz ) ) --添加主键约束 alter table test add ...
- 购买vps创建账号后无法登录ftp
购买了vps,并在后台已经开通了ftp账号,但是前台无法登录.错误提示530.解决方法是: 请检查您ftp账号密码是否输入正确,若确认正确,请您ssh登陆服务器,然后执行sh /www/wdlinux ...
- chainOfResponsibility责任链模式
责任链(Chain of Responsibility)模式 : 责任链模式是对象的行为模式.使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系.将这些处理对象连成一条链,沿着这条 ...
- 用Hbase存储Log4j日志数据:HbaseAppender
业务需求: 需求很简单,就是把多个系统的日志数据统一存储到Hbase数据库中,方便统一查看和监控. 解决思路: 写针对Hbase存储的Log4j Appender,有一个简单的日志储存策略,把Log4 ...
- POJ1011 (DFS+剪枝)
Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 129606 Accepted: 30388 Descrip ...
- html bootstrap 表头固定在顶部,表列 可以自由滚动的效果
该效果主要是依照 bootstrap 的一个样式,class="navbar-fixed-top"; 参考网址为:http://v3.bootcss.com/components/ ...