Можете подсказать как сделать так чтобы писалась в БД одной строчкой
package main
import (
"fmt"
"net"
"bufio"
"time"
"database/sql" ///пакет для работы с БД
_ "github.com/lib/pq" //пакет для работы с БД
)
const (
DB_HOST = "127.0.0.1"
DB_USER = "postgres"
DB_PASSWORD = "postgres"
DB_NAME = "freeswitch"
)
var (
err error
db *sql.DB /// для работы с запросами в БД
)
func init() {
start := time.Now()
fmt.Println("Демон Стартовал:",start)
}
func main() {
// Bind на порт ОС
listener, _ := net.Listen("tcp", ":9000")
db_property := "host=" + DB_HOST + " user=" + DB_USER + " password=" + DB_PASSWORD + " dbname=" + DB_NAME + " sslmode=disable"
db, err = sql.Open("postgres", db_property)
err = db.Ping()
defer db.Close() ///закрываем коннект к Базе данных
for {
// ждём пока не придёт клиент
conn, err := listener.Accept()
if err != nil {
fmt.Println("Can not connect!!")
conn.Close()
continue
}
fmt.Println("Connected")
// создаём Reader для чтения информации из сокета
bufReader := bufio.NewReader(conn)
fmt.Println("Start reading")
go func(conn net.Conn) {
//defer conn.Close()
for {
// побайтово читаем
rbyte, err := bufReader.ReadByte()
if err != nil {
fmt.Println("Can not read!", err)
break
}
fmt.Print(string(rbyte))
data := string(rbyte)
ip := conn.RemoteAddr().String()
start_db := time.Now()
_, err = db.Exec("INSERT INTO smpp (sms,state,ip,time) VALUES ($1, 'active' , $2, $3 )", data,ip,start_db) // Метод db.Exec() применяется, когда нужно сделать однократное обращение к базе, не требующее возврата данных.
}
}(conn)
}
}
В таком виде приходит на порт
7812587512gsggsgsag>7812587512gsggsgsag>7812587512gsggsgsag>7812587512gsggsgsag>7812587512gsggsgsag>7812587512gsggsgsag>7812587512gsggsgsag
В Бд пишеться как