xml地图|网站地图|网站标签 [设为首页] [加入收藏]
NET读取和写入Json文件,APP开发平台
分类:编程

最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便

小子菜鸟一枚,刚毕业,第一次写博客,经历了一段工作经历后觉得还是觉得得把一些东西记录下来才好,最近在搞数据库方面的知识,以后会贴一些数据库方面的的帖子 ,用来加深记忆的!

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using System.IO;  
  8. using System.Text;  
  9. using Newtonsoft.Json;  
  10. using com.zjpx.model;  
  11. using System.Collections;  
  12. using Newtonsoft.Json.Converters;  
  13.   
  14. namespace web  
  15. {  
  16.     public partial class testJson : System.Web.UI.Page  
  17.     {  
  18.         protected void Page_Load(object sender, EventArgs e)  
  19. 澳门新葡亰手机版,        {  
  20.             ConfigFileModel cfm = new ConfigFileModel();  //实体模型类  
  21.             cfm.CreateDate = "2012-02-23";  
  22.             cfm.FileName = "test.txt";  
  23.   
  24.             //可以操作集合  
  25.             Hashtable ht = new Hashtable();  
  26.             ht.Add("hs_name", "alex");  
  27.             ht.Add("hs_pwd", "ggg");  
  28.   
  29.             //序列化  
  30.             string js1 = JsonConvert.SerializeObject(cfm);  
  31.             string js2 = JsonConvert.SerializeObject(ht);  
  32.             Response.Write(js1);  
  33.             Response.Write("<br/>");  
  34.             Response.Write(js2);  
  35.             //"{"FileName":"test.txt","CreateDate":"2012-02-23"}"  
  36.             //"{"hs_pwd":"ggg","hs_name":"alex"}"  
  37.   
  38.             //反序列化  
  39.             ConfigFileModel debc1 = JsonConvert.DeserializeObject<ConfigFileModel>(js1);  
  40.             ConfigFileModel debc2 = JsonConvert.DeserializeObject<ConfigFileModel>(js2);  
  41.   
  42.             //找到服务器物理路径  
  43.             //string serverAppPath = Request.PhysicalApplicationPath.ToString();  
  44.             string serverAppPath = @"d:";  
  45.             //构成配置文件路径  
  46.             string con_file_path =@""+ serverAppPath + @"config.json";  
  47.   
  48.   
  49.             if (!File.Exists(con_file_path))  
  50.             {  
  51.                 File.Create(con_file_path);  
  52.             }  
  53.   
  54.         //把模型数据写到文件  
  55.             using (StreamWriter sw = new StreamWriter(con_file_path))  
  56.             {  
  57.                 try  
  58.                 {  
  59.   
  60.                     JsonSerializer serializer = new JsonSerializer();  
  61.                     serializer.Converters.Add(new JavaScriptDateTimeConverter());  
  62.                     serializer.NullValueHandling = NullValueHandling.Ignore;  
  63.   
  64.                     //构建Json.net的写入流  
  65.                     JsonWriter writer = new JsonTextWriter(sw);  
  66.                     //把模型数据序列化并写入Json.net的JsonWriter流中  
  67.                     serializer.Serialize(writer, cfm);  
  68.                     //ser.Serialize(writer, ht);  
  69.                     writer.Close();  
  70.                     sw.Close();  
  71.   
  72.                 }  
  73.   
  74.         }  
  75.             catch (Exception ex)  
  76.             {  
  77.                 ex.Message.ToString();  
  78.             }  
  79.   
  80.              //读取json文件  
  81.              using (StreamReader sr = new StreamReader(con_file_path))  
  82.              {  
  83.           try  
  84.                   {  
  85.                       JsonSerializer serializer = new JsonSerializer();  
  86.                       serializer.Converters.Add(new JavaScriptDateTimeConverter());  
  87.                       serializer.NullValueHandling = NullValueHandling.Ignore;  
  88.   
  89.                       //构建Json.net的读取流  
  90.                       JsonReader reader = new JsonTextReader(sr);  
  91.                       //对读取出的Json.net的reader流进行反序列化,并装载到模型中  
  92.                       cfm = serializer.Deserialize<ConfigFileModel>(reader);  
  93.   
  94.                       Response.Write("<br/>");  
  95.                       Response.Write(cfm.FileName+", "+cfm.CreateDate);  
  96.           }  
  97.                   catch (Exception ex)  
  98.                   {  
  99.                       ex.Message.ToString();  
  100.                   }  
  101.               }  
  102.   
  103.         }  
  104.     }  
  105.   
  106.     public class ConfigFileModel  
  107.     {  
  108.         public ConfigFileModel() { }  
  109.   
  110.         string _fileName;  
  111.   
  112.         public string FileName  
  113.         {  
  114.             get { return _fileName; }  
  115.             set { _fileName = value; }  
  116.         }  
  117.         string _createDate;  
  118.   
  119.         public string CreateDate  
  120.         {  
  121.             get { return _createDate; }  
  122.             set { _createDate = value; }  
  123.         }  
  124.     }  
  125. }  

一、目标样式

澳门新葡亰手机版 1

我们要实现上图中的效果,需要如下的操作:

1.数据库名为Demo,数据结构如图,image类型是用来保存byte[]数组的

1.从工具栏上的“Smobiler Components”拖动一个Signature控件和一个ImageButton控件到窗体界面上

澳门新葡亰手机版 2

澳门新葡亰手机版 3

2.修改ImageButton的属性

2.后台代码如下

a.BackColor属性

设置控件的背景色,将该属性设置为“128, 255, 128”,表示RGB颜色,如图1;

 class Program
    {
        public static readonly string conStr = "Data Source = .;Initial Catalog = Demo;Integrated Security = SSPI;";
        static void Main(string[] args)
        {
            #region 图片转为二进制流写进数据库
            byte[] buffer = ImageToByte(@"G:2.jpg");
            if (PushDataBase(buffer) > 0)
            {
                Console.WriteLine("OK");
                Console.Read();
            }
            #endregion

            #region 二进制流转图片
            //byte[] gBuffer = GetDataBase(3);
            //ByteToImage(gBuffer);
            //Console.WriteLine("OK");
            //Console.Read();
            #endregion

        }

        /// <summary>
        /// 图片转二进制流
        /// </summary>
        /// <param name="imgPath">图片路径</param>
        /// <returns></returns>
        public static byte[] ImageToByte(string imgPath)
        {
            Image image = Image.FromFile(imgPath);

            using (MemoryStream ms = new MemoryStream())
            {
                image.Save(ms, image.RawFormat);
                byte[] buffer = new byte[ms.Length];
                ms.Seek(0, SeekOrigin.Begin);
                ms.Read(buffer, 0, buffer.Length);
                return buffer;
            }
        }

        /// <summary>
        /// 字节流转图片
        /// </summary>
        /// <param name="buffer">图片二进制流</param>
        public static void ByteToImage(byte[] buffer)
        {
            MemoryStream ms = new MemoryStream();

            ms.Write(buffer, 0, buffer.Length);
            Image img = Image.FromStream(ms);
            string file = "mypicture2";
            if (img.RawFormat == ImageFormat.Jpeg)
            {
                file += ".jpg";

            }
            else if (img.RawFormat == ImageFormat.Png)
            {
                file += ".png";
            }
            else
            {
                file += ".jpg";
            }
            File.WriteAllBytes(file, buffer);
        }
        /// <summary>
        /// 写进数据库
        /// </summary>
        /// <param name="buffer">图片二进制流</param>
        /// <returns></returns>
        public static int PushDataBase(byte[] buffer)
        {
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                using (SqlCommand com = new SqlCommand())
                {
                    com.Connection = conn;
                    conn.Open();
                    com.CommandText = "insert into ImageData values(@image)";
                    com.Parameters.Add("@image", SqlDbType.Image).Value = buffer;
                    return com.ExecuteNonQuery();
                }
            }
        }
        /// <summary>
        /// 从数据库中读取
        /// </summary>
        /// <returns></returns>
        public static byte[] GetDataBase(int id)
        {
            using (SqlConnection conn = new SqlConnection(conStr))
            {
                using (SqlCommand com = new SqlCommand())
                {
                    com.Connection = conn;
                    conn.Open();
                    com.CommandText = "select ImageByte from ImageData where Id=@id";
                    com.Parameters.Add("@id", SqlDbType.Int).Value = id;
                    using (SqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            return (byte[])reader[0];
                        }
                    }

                }
            }
            return null;
        }
    }

b.BackColorAlpha属性

设置控件背景色透明度,将该属性设置为“0”,即全透明,如图2;

 好了,就到这了,不够150字居然不给发布了,我凑够字数先。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

c.Location属性

让控件显示在合适的位置(22, 86),如图3;

本文由澳门新葡亰手机版发布于编程,转载请注明出处:NET读取和写入Json文件,APP开发平台

上一篇:的默认图标,Python改变你的学习方式 下一篇:多态与多态性,计算机网络
猜你喜欢
热门排行
精彩图文