中间交换的数据是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. mvcAPI (入门 3)

    续上 1)无参数Get请求 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...

  2. FlexCell控件的使用

    private void grid1_GetCellText(object Sender, FlexCell.Grid.GetCellTextEventArgs e) { // 要使用虚表,可以在Gr ...

  3. NET MVC1项目升级到MVC2最简单的方法

    NET MVC1项目升级到MVC2最简单的方法 把MVC1项目升级到MVC2,最简单的做法如下: 新建MVC2项目 新建一个MVC2项目,把原来MVC1的项目文件全部拷贝到新建MVC2项目目录里,依照 ...

  4. windows api线程

    一.1.定义入口函数static void  threadFunc(void);//在TestDlg.h里面声明 void CTestDlg::threadFunc(void) //在TestDlg. ...

  5. POJ 3320 Jessica's Reading Problem 尺取法

    Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...

  6. Java获取音频文件(MP3)的播放时长

    最近的一个项目需要按照时间播放mp3文件,例如,播放10分钟的不同音乐. 这就意味着我得事先知道mp3文件的播放时长,以决定播放几遍这个文件. 方案一:Java的方式 找第三方的库,真的感谢这些提供j ...

  7. 取消mod_sofia的呼叫鉴权

    FreeSWITCH中默认的SIP呼叫是要鉴权的,流程如下. 终端 FreeSWITCH A -----Invite------> FS A <----Trying------ FS A ...

  8. TCP服务器不回复SYN的问题

    个人问题发生环境: 1.TCP服务器是虚拟机,IP地址是192.168.8.12. 2.TCP客户端是宿主机,IP地址是192.168.8.11. 3.从宿主机(192.168.8.11)上启动Soc ...

  9. oracle数据库中提供的5种约束

    约束作用:用来保持数据的完整性,防止无效数据进入到数据库中.oracle数据库中提供的5种约束,都是限定某个列或者列的组合的.1.主键约束(PRIMARY KEY):在一个表中能唯一的标识一行.主键可 ...

  10. Dreamweaver学习笔记---2016.08.17

    静态网页:不访问数据库,直接写入HTML. 动态网页:在网上发布好的,我们可以通过网页预览到的,具有访问数据库的过程. HTML:Hyper Text Markup Language,超文本语音标记. ...