博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式...
阅读量:6079 次
发布时间:2019-06-20

本文共 5764 字,大约阅读时间需要 19 分钟。

create proc insertLog

@Title nvarchar(50),
@Contents nvarchar(max),
@UserId int,
@CreateTime datetime
as
insert into Logs values(@Title,@Contents,@UserId,@CreateTime)
go
exec insertLog 'admin','admin',1,'2018-11-19'

 

看一下存储过程的定义:

存储过程就是一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。”

你贴出来的代码段就是实现了一个插入日志的存储过程,带@开头的表示的是参数,参数为Title标题,Contents内容,UserID用户ID,CreateTime创建时间。as与go之间的内容就类似与函数体,也就是执行的操作。exec代表执行这个存储过程,后面的四个引号中的内容是传递给存储过程的参数。

 

 

 

 

 

private static string InvokeExcute(string Command){    Command = Command.Trim().TrimEnd('&') + "&exit";    using (Process p = new Process())    {        p.StartInfo.FileName = "cmd.exe";        p.StartInfo.UseShellExecute = false;        //是否使用操作系统shell启动        p.StartInfo.RedirectStandardInput = true;   //接受来自调用程序的输入信息        p.StartInfo.RedirectStandardOutput = true;  //由调用程序获取输出信息        p.StartInfo.RedirectStandardError = true;   //重定向标准错误输出        p.StartInfo.CreateNoWindow = true;          //不显示程序窗口        p.Start();//启动程序        //向cmd窗口写入命令        p.StandardInput.WriteLine(Command);        p.StandardInput.AutoFlush = true;        //获取cmd窗口的输出信息        StreamReader reader = p.StandardOutput;//截取输出流        string str = reader.ReadToEnd();        p.WaitForExit();//等待程序执行完退出进程        p.Close();        return str;    }}

 

例子:

string str = InvokeExcute("ipconfig");Console.WriteLine(str);
 
 
 

 

在网上查找删除重复数据保留id最小的数据,方法如下:

1 DELETE 2 FROM 3     people 4 WHERE 5     peopleName IN ( 6         SELECT 7             peopleName 8         FROM 9             people10         GROUP BY11             peopleName12         HAVING13             count(peopleName) > 114     )15 AND peopleId NOT IN (16     SELECT17         min(peopleId)18     FROM19         people20     GROUP BY21         peopleName22     HAVING23         count(peopleName) > 124 )

自己使用的时候显示报错:

1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)

[Err] 1093 - You can't specify target table ‘XXX’ for update in FROM clause

暂时不知道是什么原因导致的。

然后想办法分布操作,首先筛选出有重复user的数据,然后用max()选出其中较大的那一行:

SELECT max(id) from tb GROUP BY user HAVING count(user)>1

然后再根据得到的max(id)逐条删除多余的数据

1 delete from tb where id=xx

是个笨方法,暂时先解决问题吧。

 

 

 

 
1 public static string Between(string str, string leftstr, string rightstr) //取文本中间 2         { 3             if (str != null && str.Length == 0) return ""; 4             if (leftstr != "") 5             { 6                 int i = str.IndexOf(leftstr);//去除左边字符串之后第一个字符的位置 7                 i = i + leftstr.Length;//左边字符串长度 8                 if (rightstr != "") 9                 {10                     int ResultLength = str.IndexOf(rightstr, i) - i;//取中间字符串长度11                     return str.Substring(i, ResultLength);12                 }13                 else return str.Substring(i, str.Length - i);//取字符串右边14             }15             else//取字符串左边16             {17                 int i = str.IndexOf(rightstr);18                 if (i == 0) return "";19                 else return str.Substring(0, i);20             }21         }

 

 

 

 

 

 JSON简介

JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

 

JSON与XML的比较

◆可读性

JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解。

◆文件大小与传输

XML允许使用方便的标签,所以文件尺寸是要比JSON大的。而且JSON源于Javascript,所以天生的主战场是Javascript与网络,在这里,JSON有着XML无法赶超的优势。

 

JSON语法

1. JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中:名称是字符串,使用双引号表示。值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。

数据由逗号分隔:

花括号保存对象:对象可以包含各种数据,包括数组。

方括号保存数组:数字可以包含对象。

在做开发的时候,很多数据都是以Json格式传输的,而使用Json的时候,我们通常会涉及到几个序列化对象的使用:

System.Runtime.Serialization.Json.DataContractJsonSerializer

System.Web.Script.Serialization.JavaScriptSerializer
Json.NET即Newtonsoft.Json 
由于Json.NET的性能及通用性较好,因此它的使用范围越来越广,借助前人的经验今天我也总结使用一下。 
官网API:http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm

开源的类库Newtonsoft.Json(下载地址)

 

基本用法

Json.Net是支持序列化和反序列化DataTable、DataSet、Entity Framework和Entity的

private void Newtonsoft(){    DataTable dt = new DataTable();    dt.Columns.Add("Name", Type.GetType("System.String"));    dt.Columns.Add("Sex", Type.GetType("System.String"));    dt.Columns.Add("Age", Type.GetType("System.Int32"));    dt.Columns.Add("PhoneNumber", Type.GetType("System.String"));    for (int i = 0; i < 3; i++)    {        DataRow dr = dt.NewRow();        dr["Name"] = "Name" + i;        dr["Sex"] = i % 2 == 0 ? "女" : "男";        dr["Age"] = 18 + i;        dr["PhoneNumber"] = "18233388888";        dt.Rows.Add(dr);    }    /*序列化DataTable*/    string json = JsonConvert.SerializeObject(dt);    /*反序列化DataTable*/    DataTable dtSource = JsonConvert.DeserializeObject
(json); foreach (DataRow item in dtSource.Rows) { string name = item["Name"].ToString(); string sex = item["Sex"].ToString(); int age = int.Parse(item["Age"].ToString()); string phoneNumber = item["PhoneNumber"].ToString(); }}

 

Serialize JSON 格式转换

Product product = new Product();product.Name = "Apple";product.Expiry = new DateTime(2008, 12, 28);product.Sizes = new string[] { "Small" };string json = JsonConvert.SerializeObject(product);// {//   "Name": "Apple",//   "Expiry": "2008-12-28T00:00:00",//   "Sizes": [//     "Small"//   ]// }

Deserialize JSON 格式转换

string json = @"{  'Name': 'Bad Boys',  'ReleaseDate': '1995-4-7T00:00:00',  'Genres': [    'Action',    'Comedy'  ]}";Movie m = JsonConvert.DeserializeObject
(json);string name = m.Name;// Bad Boys

LINQ to JSON 格式转换

JArray array = new JArray();array.Add("Manual text");array.Add(new DateTime(2000, 5, 23));JObject o = new JObject();o["MyArray"] = array;string json = o.ToString();// {//   "MyArray": [//     "Manual text",//     "2000-05-23T00:00:00"//   ]// }

 

转载地址:http://lshgx.baihongyu.com/

你可能感兴趣的文章
Web前端开发人员和设计师必读文章推荐【系列八】
查看>>
为工程添加组件+改写JSP页面为HTML文件
查看>>
Linux下装db2
查看>>
CentOS 7.3 关于系统启动级别
查看>>
【备忘】bash 脚本 拼 mysql 语句
查看>>
eureka相关配置
查看>>
给路由器设置enable密码[神州数码实现]
查看>>
我的友情链接
查看>>
烂泥:使KVM显示VM的IP地址及主机名
查看>>
MyBatis的flushCache和useCache的使用注意
查看>>
关于ios的autoLayout的一些简单介绍以及使用方法
查看>>
IOS学习路线(2014-05-08)
查看>>
Java正则表达式字符串匹配示例
查看>>
我的友情链接
查看>>
18本很好的HTML5电子书学习资料
查看>>
Linux中最危险的10个命令
查看>>
不同存储集状态下Networker文件系统存储集的恢复
查看>>
maven的安装配置
查看>>
2016百度知道网络引流技术
查看>>
Linux下查看服务器硬件情况-内存篇
查看>>