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 ...
随机推荐
- HDU1757 A Simple Math Problem 矩阵快速幂
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- C#处理控制台关闭事件
应用场景 我们开发的控制台应用,在运行阶段很有可能被用户Ctrl+C终止或是被用户直接关闭.如果我们不希望用户通过Ctrl+C终止我们的程序,就需要对Ctrl+C或关闭事件作处理. 处理方法 在.ne ...
- GZFramwork快速开发框架演练之会员系统(一)框架源码下载
GZFramwork框架开发环境为.NET 4.0 (必须) VS2013+SQL2005+DevExpress v13.2.8+FastReport (推荐) 数据库建模工具PowerDesi ...
- 【转载】linux内核笔记之进程地址空间
原文:linux内核笔记之进程地址空间 进程的地址空间由允许进程使用的全部线性地址组成,在32位系统中为0~3GB,每个进程看到的线性地址集合是不同的. 内核通过线性区的资源(数据结构)来表示线性地址 ...
- Know How And When To Use System.Message_Level To Control Messages In Oracle Forms
SYSTEM.MESSAGE_LEVEL is used to control the messages that end users see when they use the Oracle For ...
- [原创] 使用LP Wizard 10.5 制作 Allegro PCB封装
本文只讲述使用 Calculator 和 Wizard 功能制作封装,通常学会使用这种方法,通用的标准封装就都可以生成了.下面以一个简单的SOIC-8封装的芯片来说明软件使用方法. 第一步,查找相关d ...
- CG绘画笔记
看一些比较好的作品:看作品哪些部分,部件,盔甲比较吸引人,提取一个比较好的点,进行组合创作. 逆光.切光布局构图 创作:故事.情感.经历.朋友.时代 灵感: 电影.音乐 变化(色彩)透视 空气透视视觉 ...
- Java开发中经典的小实例-(while(参数){})
import java.util.Scanner;public class Test_while { public static void main(String[] args) { ...
- CUBRID学习笔记 8 复制数据库
1 export database 类似sqlserver的分离数据库 cubrid unloaddb demodb分离后生成三个文件 demodb_objects, demodb_indexe ...
- Redis 在新浪微博中的应用
Redis 在新浪微博中的应用 Redis简介 1. 支持5种数据结构 支持strings, hashes, lists, sets, sorted setsstring是很好的存储方式,用来做计数存 ...