SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法
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代表执行这个存储过程,后面的四个引号中的内容是传递给存储过程的参数。
C#调用Windows CMD命令并返回输出结果

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);
Mysql删除重复数据保留最小的id
在网上查找删除重复数据保留id最小的数据,方法如下:

1 DELETE 2 FROM 3 people 4 WHERE 5 peopleName IN ( 6 SELECT 7 peopleName 8 FROM 9 people 10 GROUP BY 11 peopleName 12 HAVING 13 count(peopleName) > 1 14 ) 15 AND peopleId NOT IN ( 16 SELECT 17 min(peopleId) 18 FROM 19 people 20 GROUP BY 21 peopleName 22 HAVING 23 count(peopleName) > 1 24 )

自己使用的时候显示报错:
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
是个笨方法,暂时先解决问题吧。
C# 取字符串中间文本 取字符串左边 取字符串右边

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 }


C# JSON格式数据高级用法
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(下载地址https://www.newtonsoft.com/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<DataTable>(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<Movie>(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"
// ]
// }

SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法的更多相关文章
- Python实现Windows CMD命令行彩色输出
#! /usr/bin/env python #coding=utf-8 import ctypes,sys STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE ...
- sql server 存储过程中,调用事务 tran
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran来使用事务. begin tran表示开始事务, commit tran表示 ...
- Mysql删除重复数据保留最小的id
在网上查找删除重复数据保留id最小的数据,方法如下: DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GR ...
- C#调用Windows CMD命令并,返回输出结果或错误信息
public static string InvokeExcute(string Command) { Command = Command.Trim().TrimEnd('&') + &quo ...
- 解析json格式数据
实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- Android创建JSON格式数据
Android创建JSON格式数据 作为上一篇博客的补充,简单那解说了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据.因为An ...
- C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try
C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
随机推荐
- extjs form textfield的隐藏方法
只需将textfield的hidden和hideLabel配置为true就可以了.只设置hidden:true时会显示出来一个:的标签. this.formpanel = new Ext.Fo ...
- C++输出上三角/下三角/菱形/杨辉三角形
1.输出上三角形 第一行1个星,第二行3个星,第三行5个星,第四行7个星,第五行9个星. 分析:三角形的形状由输出的空白和星组成,通过分析每一行输出几个空格,几个星,就可完成输出三角形的工作. #in ...
- JavaScript面试(-------------------------------------------)
this是什么 方法调用模式 构造器调用模式 函数调用模式 apply/call模式 this是什么 —大多语言中,’this’代表由类实例化的当前对象.在JavaScript中,’this’通常表示 ...
- 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
htpasswd 是apache的小工具.在apache安装文件夹bin下可找到. Usage: htpasswd [-cmdpsD] passwordfile username htpasswd - ...
- Java垃圾回收精粹 — Part4
Java垃圾回收精粹分4个部分,本篇是第4部分.在第4部分里介绍了G1收集器.其他并发收集器以及垃圾收集监控和调优. Garbage First (G1) 收集器 G1 (-XX:+UseG1GC)收 ...
- 【转载】Redis Sentinel 高可用服务架构搭建
作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...
- 解决 PHP Fatal error: Call-time pass-by-reference has been removed
PHP在升级到5.4版本的php可能会出现这种错误: 如果这样使用函数(或者类)的话,会产生一个 PHP Fatal error:foo(&$var);实际上,这样用法在php5.3中就会有提 ...
- macOS VMWare Fusion报错”找不到可以连接的有效对等进程”的解决方案
macOS VMWare Fusion报错”找不到可以连接的有效对等进程”的解决方案 我的是macOS 10,默认情况下不允许未知身份的软件安装 默认情况,如下图所示: 解决办法: sudo spct ...
- iOS:提示框(警告框)控件UIAlertView的详解
提示框(警告框)控件:UIAlertView 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能. 类型:typedef NS_ENUM(NSInte ...
- Qt 事件处理机制 (上篇)
本篇来介绍Qt 事件处理机制 .深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集. 大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制. ...