中间交换的数据是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提供数据服务的更多相关文章

  1. ArcGIS API for JavaScript(2)-ArcGIS Server发布要素图层服务

    1.前言 上一篇该系列的文章我们主要讲了一下基础Web地图搭建,这篇我们主要讲一下ArcGIS Server发布服务,并且如何调用服务.将自己的数据加载到Web地图当中来,实现Web端浏览数据. 2. ...

  2. 【GoLang】golang HTTP GET/POST JSON的服务端、客户端示例,包含序列化、反序列化

    服务端代码示例: package main import ( "encoding/json" "fmt" "io/ioutil" " ...

  3. Android 网络服务介绍

    1. 介绍 Android网络服务主要包括如下四个部分 - ConnectivityService: 提供数据连接管理服务,包括移动数据.WIFI.以太网等 - NetworkPolicyManage ...

  4. 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 ...

  5. ArcGIS Server新建主题图服务的步骤

    ArcGIS Server新建主题图服务的步骤: 1.修改数据库模型图(PowerDesigner) 2.修改lygis.gdb文件数据库(发布时可以快速把表结构从gdb数据库拷贝到客户服务器的SDE ...

  6. 3D语音天气球(源码分享)——在Unity中使用Android语音服务

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 这个项目准备分四部分介绍: 一:创建可旋转的"3D球":3 ...

  7. 以Server模式启动Derby服务竟然抛套接字权限异常

    以Server模式启动Derby服务竟然抛套接字权限异常:access denied ("java.net.SocketPermission" "localhost:15 ...

  8. OpenLayers调用arcgis server发布的地图服务

    有两种方式可以调用arcgis server发布的地图服务,一种是rest,一种是wms.  地图的投影为900913,arcgis server为10.0版本,地图服务的空间参考为3857.   与 ...

  9. OpenLayers调用ArcGIS Server发布的WFS服务

    OpenLayers调用ArcGIS Server发布的WFS服务 原创: 蔡建良 2013-08-20 一. 开发环境 1) Openlayers2.13+arcgis server9.3 2) W ...

随机推荐

  1. 一、安装JDK和Tomcat

    一.安装JDK和Tomcat 1,安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可. 备注:路径可以其他盘符,不建议路径包含中文名及特殊符号. 2.安装Tomc ...

  2. VM安装失败

    出现:VMware安装失败 “Failed to create the requested registry key Key:installer Error:1021" 解决: 开始--运行 ...

  3. 安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案

    安装64位版Oracle11gR2后发现启动SQL Developer时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\product\11.2 ...

  4. 转载:windows的mysql提权方式

    mysql提权语句归纳如下: 一 UDF提权 这类提权方法我想大家已经知道了,我大致写一下,具体语句如下: create function cmdshell returns string soname ...

  5. getting started with Baxter Research Robot

    1. Baxter Research Robot Baxter Research Robot is from Rethink Robotics. There is also a video on TE ...

  6. WrapPanel流布局的一个简单例子

    <Window x:Class="WrapPanel.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2 ...

  7. HDU-4518 吉哥系列故事——最终数 AC自动机+数位DP

    题意:如果一个数中的某一段是长度大于2的菲波那契数,那么这个数就被定义为F数,前几个F数是13,21,34,55......将这些数字进行编号,a1 = 13, a2 = 21.现给定一个数n,输出和 ...

  8. HIHO线段树(成段)

    #include <stdio.h> #define lson l,mid,id<<1 #define rson mid+1,r,id<<1|1 ; ],lazy[ ...

  9. java获取中问名字的首字母

    public class FirstLetterUtil { private static int BEGIN = 45217; private static int END = 63486; // ...

  10. Linux_常用命令_02

    1. 配置网络参数: (1).root登录 --> setup命令 进入到 "text mode setup utiliy" (2).运行命令"/etc/rc.d/ ...