go 读取数据库所有表数据显示到网页(便于测试时看)

  1 package Network
  2
  3 import (
  4     "SQL/myDB"
  5     "database/sql"
  6     "logs"
  7     "net/http"
  8 )
  9
 10 func dbPage(w http.ResponseWriter, req *http.Request) {
 11     printRequestInfo(req)
 12     w.Header().Set("Content-Type", "text/html;charset=utf-8")
 13     w.Write([]byte(`
 14 <!DOCTYPE html>
 15 <html>
 16 <head>
 17 <title>数据库所有数据</title>
 18 </head>
 19 <body>
 20     `))
 21     w.Write([]byte(`
 22     <a href="\setData?page=resetDB"><h1>重置数据</h1></a>
 23     <a href="\setData?page=copyDB"><h1>复制数据</h1></a>
 24     `))
 25     defer w.Write([]byte(`
 26 </body>
 27 </html>
 28     `))
 29     w.Write([]byte(`
 30     <h1>以下是数据库每个表前一百条,方便你们接口联调</h1>
 31     `))
 32     db, err := myDB.GetDB()
 33     if err != nil {
 34         w.Write([]byte("<p>" + err.Error() + "</p>"))
 35         return
 36     }
 37
 38     description := []string{
 39         `1.objects(id int64 pk,nickname string,iconURL string,isUser bool,custom jsonb)
 40         `, `2.users(id int64 fk pk,account string unique,password string,isManager bool)
 41         `, `3.groups(id int64 fk pk,createtime time)
 42         `, `4.members(groupID int64 fk,userID int64 fk,pk(groupID,userID))
 43         `, `5.messages(id int64 pk,content string,sender int64 fk,receiver int64 fk,createTime time)
 44         `, `6.sessions(senderID int64 fk,receiverID  int64 fk,lastMsgID int64 fk,pk(senderID,receiverID));
 45         `,
 46     }
 47     Sql := []string{
 48         `select * from objects
 49         `, `select * from users
 50         `, `select * from groups
 51         `, `select * from members
 52         `, `select * from messages
 53         `, `select * from sessions
 54         `,
 55     }
 56     for idx := 0; idx < len(Sql); idx++ {
 57         w.Write([]byte("<h2>" + description[idx] + "</h2>"))
 58         err := showData(w, db, Sql[idx])
 59         if err != nil {
 60             logs.Print("dbPage error:", err.Error())
 61             return
 62         }
 63     }
 64 }
 65
 66 func showData(w http.ResponseWriter, db *sql.DB, Sql string) error {
 67     Sql += " limit 100"
 68     rows, err := db.Query(Sql)
 69     if err != nil {
 70         w.Write([]byte("<p>" + err.Error() + "</p>"))
 71         return err
 72     }
 73     defer rows.Close()
 74
 75     w.Write([]byte(`
 76         <table border="1">
 77             <tr>
 78             `))
 79     defer w.Write([]byte(`
 80             </tr>
 81         </table> `))
 82
 83     cols, err := rows.Columns()
 84     if err != nil {
 85         w.Write([]byte(err.Error()))
 86         return err
 87     }
 88     for _, val := range cols {
 89         w.Write([]byte("<th>" + val + "</th>"))
 90     }
 91
 92     return htmlOutputRows(w, len(cols), rows)
 93 }
 94 func htmlOutputRows(w http.ResponseWriter, colNum int, rows *sql.Rows) error {
 95     str := make([][]byte, colNum)
 96     for rows.Next() {
 97         w.Write([]byte(` <tr>`))
 98         args := make([]interface{}, 0)
 99         for idx := 0; idx < colNum; idx++ {
100             args = append(args, &str[idx])
101         }
102         err := rows.Scan(args...)
103         if err != nil {
104             w.Write([]byte(err.Error()))
105             return err
106         }
107         for _, val := range str {
108             w.Write([]byte("<td>" + string(val) + "</td>"))
109         }
110         w.Write([]byte("</tr>"))
111     }
112     return nil
113 }

/dbPage

时间: 2024-08-14 17:00:17

go 读取数据库所有表数据显示到网页(便于测试时看)的相关文章

c#中读取数据库bit布尔字段数据转换Int和bool时的错误

数据库里bit这个布尔类型的字段,非常实用,但是在c#里读取时,许多人喜欢犯一些错误,导致运行报错. 实际中,有效的正确读取方法只有以下两种: int xxx= Convet.ToInt16(reader["xxx"]);//或Convet.ToInt32 bool xxx= bool.Parse(reader["xxx"]); 其他的都有可能会报错,即便不报错,也不能保证数据库设置或操作系统的问题,导致突然报错了! 如int.Parse(),有时就会报一下错误:

Excel读取数据库表

下面的代码用于一般情况下用Excel宏读取数据库的表字段 Public Sub getdata() Dim cnn As New ADODB.Connection, sh As Worksheet Dim rs As New ADODB.Recordset Dim cnnStr As String, SQL As String cnnStr = "Provider=SQLOLEDB;Initial Catalog=BI" & ";User ID=sa" &a

读取数据库信息构建视图字段的备注信息,方便程序代码生成

在很多情况下,我们开发都需要有一个快速的代码生成工具用来提高开发效率,代码生成工具很多信息都是读取数据库的表.视图等元数据进行对象表信息的完善,有了这些信息,我们就可以在普通的实体类代码里面添加属性字段的中文注释,或者在Winform或者Web界面的快速生成的时候,可以在查询框或者界面编辑的时候,充当标签提示等处理信息.但是,一般情况下视图的备注信息是没有的,但是视图和表之间是存在一定的关系的,虽然不同数据库系统对于它们的信息对应不一定一致,但是我们可以把它们的对应关系寻找出来就可以给视图字段增

C API--linux上c语言读取数据库内容(mysql)

要想知道怎么通过c语言操作数据库,必须要了解这几个结构体的含义,这里只是简单说一下如果想要了解的更深入可以到网上搜一下 C API数据类型 1.MYSQL结构代表一个数据库连接的句柄,包含有关服务器的连接状态的信息,几乎所有的函数均使用到他.要连接MySQL,必须建立MYSQL实例,通过mysql_init初始化方能开始连接. 2.MYSQL_RES结果代表返回的查询结果(select,show等).也将查询的返回的信息成为"结果集".在c的API里对应的就是MYSQL_RES了,从数

(转)java读取数据库表信息,子段

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /*** * 2014-07-21日: * oracle数据

读取数据库表判断有没有某个字段

$result= $this->db->query("select * from `qx` where 1 limit 0,1")->result_array(); 读取数据库表判断有没有某个字段,有的话就执行update,没有的话就insert. [ where 1 表示条件成立,后面不跟其他条件,这里有与没有是一样的.limit 1直取一条 ] 先用一个sql语句,查出这个表所有字段,用一个数组来装起来. 然后根据 字段和字段的比较,判断是更新或者insert.

二进制数据将图片保存到数据库,并读取数据库二进制数据显示图片

一. 浏览图片 OpenFileDialog ofd = new OpenFileDialog();            ofd.InitialDirectory = @"E:\";            ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files(*.*)|*.*";            ofd.RestoreDirectory = true; if (ofd

查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. 系统信息结构图参考:http://dev.mysql.com/doc/refman/5.1/zh/information-schema.html 1.2000下操作: 系统表目录:大部分以dbo.sys为前缀. 系统视图目录:有20个常用的视图,以INFORMATION_SCHEMA为前缀. 在2

MYSQL数据库建表注意事项

1.库名.表名.字段名必须使用小写字母,"_"分割. 原因: MySQL在Linux下数据库名.表名.列名.别名大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名在所有的情况下均是忽略大小写的: 4.变量名也是严格区分大小写的:MySQL在Windows下都不区分大小写. 所以在不同操作系统中为了能使程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范化大小写了,那么在Windows环