using JiangSu.Models; using Npgsql; using System; using System.Collections.Generic; using System.Data; using System.Data.Common; using System.Linq; using System.Web; namespace JiangSu.cs { public class ImgPgDAL { public static List SelectByPage(string name, int pageSize = 10, int pageIndex = 1) { bool flag = string.IsNullOrWhiteSpace(name); string sql = string.Format("select id, name, path, json, st_astext(geom) geom from sd.img {0} order by id limit {1} offset {2}", flag ? "" : "where upper(name) like @name", pageSize, pageSize * (pageIndex - 1)); DataTable dt = flag ? Tools.PGHelper.GetDataTable(sql) : Tools.PGHelper.GetDataTable(sql, new NpgsqlParameter("@name", "%" + name.Trim().ToUpper() + "%")); if (null == dt || dt.Rows.Count == 0) { return null; } return ModelHandler.FillModel(dt); } public static ImgPg SelectById(long id) { string sql = "select id, name, path, json, st_astext(geom) geom from sd.img where id = @id"; DbParameter param = new NpgsqlParameter("@id", id); DataTable dt = Tools.PGHelper.GetDataTable(sql, param); if (null == dt || dt.Rows.Count == 0) { return null; } var list = ModelHandler.FillModel(dt); return null == list || list.Count == 0 ? null : list[0]; } public static int DeleteByIds(List ids) { string str = string.Join(",", ids.ToArray()); string sql = string.Format("delete from sd.img where id in ({0})", str); return Tools.PGHelper.ExecuteNonQuery(sql); } public static int Insert(ImgPg img) { string geom = string.IsNullOrWhiteSpace(img.geom) ? "null" : string.Format("ST_GeomFromText('{0}')", img.geom); string sql = string.Format("insert into sd.img (name, path, json, geom) values (@name, @path, @json, {0}) returning id", geom); DbParameter[] sqlParams = Tools.GetPGParams(sql, img); object obj = Tools.PGHelper.GetScalar(sql, sqlParams); return null == obj ? 0 : Convert.ToInt32(obj); } public static int UpdateById(ImgPg img) { string geom = string.IsNullOrWhiteSpace(img.geom) ? "" : string.Format(", geom = ST_GeomFromText('{0}')", img.geom); string sql = string.Format("update sd.img set name = @name, path = @path, json = @json{0} where id = @id", geom); DbParameter[] sqlParams = Tools.GetPGParams(sql, img); return Tools.PGHelper.ExecuteNonQuery(sql, sqlParams); } } }