admin管理员组

文章数量:1575555

文章目录

  • 文件夹架构:
  • Razor(刀片)的文件类型
  • 从控制器向页面传值的方式
  • 单词释义
  • ActionResult
  • JsonBinder
  • .aspx(或.asp)文件与.html(.htm)文件的区别与联系
  • MVC [HttpGet]和[HttpPost]的使用
  • C#中的int?是什么意思
  • swagger、lombok
  • Enum
  • 约束
  • Linq语法
  • EF多表关系查询
  • JAva泛型的讲解
  • 下拉框
  • 异常类型
    • 1.安装vs 报错:未能连接到网络
    • 2.解决VS2019一直弹出调试窗口
    • 3.error(待解决)
    • 4.关于backgroundworker执行程序,进度条一动不动
    • 5.Redis密码中特殊字符解析报错(JAVA)
  • 操作字符串
    • 1.替换字符串头部的多个0
    • 2.截取子字符串
  • SQL语句
    • 一、更新
      • 1.update inner join (MSSQL)
      • 2.按条件批量更新
      • 3.备份数据库表
      • 4. update
    • 二、查询
      • 0.sql查询某一字段为 null 的数据
      • 1.mysql/sql查询并统计数量
      • 2.mysql/sql查询重复数据只显示一条
      • 3.查询表里出现重复village_code的记录
      • 4.SQL语句查询字段里包含某个字符串
      • 5.一具体实例
    • 三、删除
      • 1.删除重复数据
      • 2.删除操作
    • 四、插入
      • 1.INSERT INTO SELECT语句
      • 2.SELECT INTO FROM语句
    • 8.注意事项
  • 对C盘进行清理
  • 在一个解决方案中添加类库的正确方式
  • Invoke
  • string.format
  • 声明委托(Delegate)
  • channel
  • vs快捷键
  • idea快捷键
    • 1.基础快捷键
    • 2.编辑快捷键
    • 3.运行和调试快捷键
    • 4.代码导航和切换快捷键
    • 5.注释和格式化快捷键
    • 6.Ctrl + O:重写方法

文件夹架构:

App_Data ----- 数据文件夹,外网不能访问。用于存储应用程序数据。

App_Start ----- 初始化配置

Content ----- Content文件夹用于存放静态文件,比如样式表(CSS 文件)、图标和图像。Visual Web Developer 同时也会添加一个标准的样式表文件到项目中:即 content 文件夹中的 Site.css 文件。这个样式表文件是您想要改变应用程序样式时需要编辑的文件。

Controllers文件夹 -----包含负责处理用户输入和响应的控制器类。MVC 要求所有控制器文件的名称以 “Controller” 结尾。Visual Web Developer 已经创建好一个 Home 控制器(用于 Home 页面和 About 页面)和一个 Account 控制器(用于 Login 页面)。

controller相关约定:
1、Controller放到controller文件夹中,并且命名方式以controller结尾。
2、每个Controller都对应View一个文件夹,文件夹的名称跟Controller名相同。
视图的相关约定:
1、Controller中的方法名都对应一个View(非必须,但是建议这样做)而且View的名字跟Action的名字相同。
2、控制器必须是非静态类,并且要实现IController接口。
3、对个控制器公共的视图放到Shared:例如公共的错误页,列表模板页,表单模板页等。

Models 文件夹 ----- Models 文件夹包含表示应用程序模型的类。模型控制并操作应用程序的数据。

Views 文件夹 ----- 存储与应用程序的显示相关的 HTML 文件(用户界面)。Views 文件夹中包含每个控制器对应的一个文件夹。在 Views 文件夹中,Visual Web Developer 已经创建了一个 Account 文件夹、一个 Home 文件夹、一个 Shared 文件夹。

  • Account 文件夹包含用于用户账号注册和登录的页面。

  • Home 文件夹用于存储诸如 home 页和 about 页之类的应用程序页面。

  • Shared 文件夹用于存储控制器间分享的视图(母版页和布局页)。

Scripts 文件夹 ----- 存储JavaScript 文件。默认情况下,Visual Web Developer 在这个文件夹中存放标准的 MVC、Ajax 和 jQuery 文件。

Razor(刀片)的文件类型

Razor支持两种文件类型,分别是.cshtml和.vbhtml,其中.cshtml的服务器代码使用了C#的语法,.vbhtml的服务器代码使用了vb的语法。Razor其实是一种服务器代码和HTML代码混写的代码模板。

1、 @变量名的方式进行输出:

@{ string productName = "灯泡!";}
<span>@productName</span>C#代码和html代码进行混编
<span>当前时间为:@DateTime.Now.ToString("yyyy-MM-hh");</span>

2、 可以使用@{}来定义一段代码块:

@{
string name = "tom";
int age = 20;
int a = 20;
int b = 22;
int sum = a + b;
}

从控制器向页面传值的方式

  1. ViewData。通过键值对的形式传值,取值时通过键取出,取出来的往往进行强制类型转换
  • 使用场景:向单个页面传值
  • 例如:ViewData[“myage”] = 23;
    ViewData[“myname”] = “tom”;
    ViewData[“mylist”]= list;
  1. ViewBag:为ViewBag定义一个名称,通过这个名称取值,取出的值一般不需要强制转换,
    dynamic类似理解为var,这种类型不需要进行数据转换,它会自动完成转换
  • 例如: 使用场景:向单个页面传值
    ViewBag.name = “lh”;
    ViewBag.age = 24;
    ViewBag.list = list;
  1. TempData:使用方式和ViewData类似,使用键值对的形式传值,通过键进行取值
    使用场景:向单个页面传值,也可以跨页传值,但是只能使用一次,一旦被接受就释放。
Controller控制器定义
List<string> list = new List<string>() { "语文", "数学", "英语" };
ViewData["myage"] = 23;
ViewData["myname"] = "tom";
ViewData["mylist"]= list;
ViewBag.name = "lh";
ViewBag.age = 24;
ViewBag.list = list;
TempData["name"] = "跨页传值!";
View视图取值
@{
string name = ViewData["myname"].ToString();
int age = Convert.ToInt32(ViewData["myage"]);
List<string> list = ViewData["mylist"] as List<string>;
<br />
string bagname = ViewBag.name;
int bagage = ViewBag.age;
List<string> baglist = ViewBag.list;
string tempdate = TempData["name"].ToString();
}
<h1>viewdata的name:@name</h1>
<h1>viewdata的name:@age</h1>
<h1>viewdata的name:@list[0]</h1>
<h2>viewbag的name:@bagname</h2>
<h2>viewbag的name:@bagage</h2>
<h2>viewbag的name:@baglist[0]</h2>
<h2> tempdate的name:@tempdate</h2>
<a href="Test">跳转到Tset</a>
<a href="../User/Index">跳转到User控制器的View视图</a>

传值练习
使用ViewData打印name的值,使用ViewBag打印age的值
控制器定义方法和值
public ActionResult Chuanzhi2(){
    List<string> name = new List<string>() { "刘备", "关羽", "张飞", "赵云", "黄忠" };
    List<int> age = new List<int>() { 25, 24, 23, 22, 21 };
    ViewData["myname"]=name;
    ViewBag.myage=age;
}
View取值
@{
    List<string> name = VIewDate["myname"] as List<string>;
    List<int> name = VIewBag["myage"] as List<int>;
}
<table class="table table-bordered table-responsive" >
    <thead >
        <tr >
            <th >
                姓名:
            </th>
            <th >
                年龄:
            </th>
        </tr>
    </thead>
    <tbody class="text-primary">
        @for (int i = 0; i < 5; i++){
        <tr>
            <td>@myname[i]</td>
            <td>@myage[i]</td>
        </tr>
        }
    </tbody>
</table>

单词释义

ActionFilterAttribute ---- 过滤属性
attentionController ---- 注意事项控制器
AlarmSettings ---- 报警设置
attribute ---- 特性类
async ---- 异步的
application ---- 应用
chart ---- 图表
cache ---- 缓存
cubetrend ---- 立方英尺
constraint ---- 约束
conditional ---- 条件
Component ---- 组件
combo ---- 组合体
Convert ----转换
Column ---- 列
coordPoint ---- 协调点
Descending ---- 降序
decimal ---- 十进制的
documentation ---- 文档
district ---- 地区、不同的
enterprise ---- 企业
extension ---- 扩展
expression ---- 表达式
enum ---- 列举、枚举类型
encryption ---- 加密
fencework ---- 围栏工程
filter ---- 过滤器
fileStream ---- 文件流
Rank ---- 等级
Repository ---- 存储库
Regex ---- 正则表达式
Runat ---- 符文
Initial Catalog ---- 数据库名称
integral ---- 完整的
initInterface ---- 初始化接口
infrastructure ---- 基础设施
instance ---- 实例
Initializes ---- 初始化
log ---- 日志
operator ---- 操作人员
param ---- 参数
parameter ---- 参数
posable ---- 可定位的
provider ---- 提供者、提供器
property ---- 属性
serializeEditData ---- 序列化编辑数据
Schema ---- 架构
specified ---- 指定的
sheet ---- 表
site ---- 地点
segment ---- 寄存器
sequence ---- 序列
specific ---- 具体的
Serializable ---- 序列化
task ---- 任务
template ---- 样板
trend ---- 趋势
unload ---- 卸载
variable ---- 变量
vector ---- 矢量
vehicle ---- 交通工具
Verification ---- 验证
Validator ---- 验证器
workbook ---- 工作簿
LngLatHelper ----


ActionResult

ActionResult 是一个抽象(abstract)类,ViewResult 只是ActionResult 的一个实现(implementation)。如果你确认你返回的是一个视图(view),你可以直接返回类型为ViewResult。
ActionResult 有很多的派生类,如果你很确定你要返回的类型,你可以明确的返回该类型。
如果你并不是很清楚,或者你根本不想去理解这些东西,你可以直接返回这些派生类的基类:ActionResult 。

JsonBinder

ASP.NET MVC中的Json Binding和Validate

.aspx(或.asp)文件与.html(.htm)文件的区别与联系

都是描述网页文档的文件,主要的区别在于,当用户请求页面时,它们在服务器的端的处理不同。
 下图解释客户端请求页面时,服务器端的处理流程:

.html文件
 Ø .html文件是基于HTML的静态网页,它的内容是固定不变的。其页面内容使用的仅仅是标准的HTML代码,最多再加上流行的gif、flash 等格式的动态图片,还有产生动态的字幕等动画效果。

Ø 当客户机通过IE浏览器向Web服务器请求提供网页内容时,服务器仅仅是将已经设计好的静态HTML文档传送给用户浏览器。

.aspx文件
.aspx是ASP.NET 页面的扩展名。它无非是在静态HTML网页里面嵌入了动态的指令(这些动态指令是由各种脚本语言编写的,是由IIS服务器上的脚本引擎来执行的)而已。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前,服务器首先会处理页面中的可执行代码(即,脚本语言代码 )。

也就是说,一个asp网页主要包含两个部分:

⑴ HTML静态网页要素:由IE浏览器解释执行

⑵ asp脚本命令:由IIS脚本引擎解释执行

对比1:
 我们分别在html页和aspx页插入脚本语言,对比运行效果

Html测试
 
Aspx测试
 
说明:
 静态HTML语言的要素定义的是数据如何显示,而不能如何动态生成数据,所以单纯使用HTML制作的网页就是静态的。

对比2:
 在浏览器端对应的页面,右击—>查看源码(下面称客户端源码),我们对比客户端源码与服务器端程序员编写的源码(下面称服务器端源码)是否一致。

Html测试
 
Aspx测试
 
说明:

Web服务器并未对静态的html页做任何处理就直接发送给所请求的浏览器,然后由浏览器端的解释器进行内容解释并显示结果。其实,对于静态网站(由静态的HTML网页构成的网站)而言,Web服务器确实不是必需的。在这里Web服务器不过充当了一个静态网页的组织者的角色而已。

总结:

  1. 尽管asp网页和静态网页一样都是文本文件,但是IIS只有看到后缀名为asp的文件才会认为是asp动态网页,才会交给脚本引擎执行。
  2. 可以看到静态网页可以以asp为扩展名,但不赞成这样,因为扩展名一改,其后台的执行机制就会发生改变,会导致服务器性能下降。
  3. IIS发现是以aspx(或asp)为扩展名的网页就会交给脚本引擎去识别和执行。脚本引擎逐行判断网页代码是动态的还是静态的。如果是静态的就直接反馈给IE浏览器;如果是动态的aspx(或asp)代码则按照要求生成结果,并将结果插入到网页中的相关位置上,最后反馈给IE浏览器。
  4. asp中包含一个asp.dll文件,默认安装在系统目录winnt\system32\inetsrv\下。
  5. 该文件是一个动态链接库,其作用就是对后缀名为asp的网页文件进行分析,判断其中是否有asp动态脚本代码。如果有则将代码送往相应的脚本引擎执行;如果是静态的HTML代码,则直接反馈给IE浏览器。
  6. 在一般情况下不需要,因为IIS中已经内嵌有VBScript和JavaScript的脚本引擎。如果需要开发其他类型的脚本命令的网页,就需要安装相应的脚本引擎。

MVC [HttpGet]和[HttpPost]的使用

传的参数为空时用 [HttpGet]比较多,
[POST] 一般用来向服务端提交数据

C#中的int?是什么意思

int?:表示可空类型,就是一种特殊的值类型,它的值可以是null;
在给变量设置初值的时候,可以给变量(int类型)赋值为null,而不是0.
int??:用于判断并赋值,先判断当前变量是否为null,如果是就可以赋一个新值,否则跳过。

public int? a = null;
public int b(){
	return this.a ?? 0;
}

swagger、lombok

可以用swagger来生成API文档,用lombok来简化实体类, (/swagger/ui/index)(http://localhost:9733/doc.html)

Enum

enum枚举类

 /// <summary>
    /// 云图类型
    /// </summary>
    public enum CloudTypeEnum 	///给枚举类添加特性
    {
        [Text("线路")]
        Line = 1,
        [Text("国控点")]
        CountryPoint = 2,
        [Text("市控点")]
        CityPoint = 3,
        [Text("区域")]
        Region = 4
    }

/// <summary>
/// 登录来源
/// </summary>
public enum LoginSource
{
    Web = 1,
    App = 2
}

 /// <summary>
    /// 月天时
    /// </summary>
    public enum MonthDayHourEnum
    {
        Hour = 1,
        Day = 2,
        Month = 3
    }

   /// <summary>
    /// 登录来源
    /// </summary>
    public enum LoginSource
    {
        Web = 1,
        App = 2
    }

    /// <summary>
    /// 日志级别
    /// </summary>
    public enum LogLevel
    {
        /// <summary>
        /// 消息日志
        /// </summary>
        Info = 1,
        /// <summary>
        /// 错误日志
        /// </summary>
        Error = 2
    }

    public enum CrudEnum
    {
        Create,
        Retrieve,
        Update,
        Delete
    }

约束

约束实际上就是表中数据的限制条件。表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效。

  • 比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等。

接口约束。

  • 例如,可以声明一个泛型类 MyGenericClass,这样,类型参数 T 就可以实现 IComparable 接口:
    public class MyGenericClass < T > where T:IComparable { }
public ActionResult ListPaging([JsonBinder]jqGrid grid)
{
     var where = grid.CreatePageBase<Q_Department>();
     var temp = deptService.Query(where);
     return grid.SetData(temp, x => x.Select(y => y.ToModel()));
}

Linq语法

Linq语句

    查询语法从一个From子句开始,然后是一个Range变量。在从子句结构类似,意味着从集合中的每个对象。它类似于一个foreach循环:"From rangeVariableName in IEnumerablecollection"foreach(Student s in studentList)
     在From子句之后,可以使用不同的标准查询运算符来过滤,分组和集合的元素。在LINQ中有大约50个标准查询操作符可用。在上图中,我们使用了“where”运算符(aka子句)后跟一个条件。这个条件通常用lambda表达式表示。
     LINQ查询语法总是以Select或Group子句结束。Select子句用于形成数据。您可以按原样选择整个对象,也可以仅选择其中的一些属性。在上面的例子中,我们选择了每个结果字符串元素。

  1. Linq to EF查询:
DataModelContainer dbCotent = new DataModelContainer();
            //linq查询是一种高效查询,执行时会先执行where条件过滤出符合条件的数据,而不是先查询出所有数据再过滤,在数据库端就过滤了
            //linq查询返回值是IQuerable<UserInfo>类型,一种接口集合
            //IQueryable<UserInfo > temp = from u in dbCotent.UserInfo 与下面一句等效
            var temp = from u in dbCotent.UserInfo
                       where u.Id > 5
                       select u;
            //因此查询出来的temp就是一个IQueryable集合,里面装的UserInfo类型数据
            foreach (var user in temp)
            {
                Console.WriteLine(user.Id + "  " + user.UName);
            }
            Console.ReadKey();
  1. Lambda to EF查询:
  DataModelContainer dbContent = new DataModelContainer();
            //var data = dbContent.UserInfo.Where(u => u.Id > 5);
            //返回值类型也为IQueryable
            IQueryable<UserInfo> data = dbContent.UserInfo.Where(u => u.Id > 5);
            foreach (var user in data)
            {
                Console.WriteLine(user.Id+"  "+user.UName);
            }
        Console.ReadKey();

OrderBy(t => t.ModuleOrder)
等同于:order by t.ModuleOrder

查询实例

EF多表关系查询

注意:EF关联关系只能通过主键来建立 .
eg:

public DieseaseMapping()
        {
            ToTable("MPS_D_Disease");
            HasKey(t => t.Id);

            HasOptional(x => x.route).WithMany().HasForeignKey(x => x.RouteId);		√ 可行
            
            HasOptional(x => x.route).WithMany().HasForeignKey(x => x.RouteCode);	X 不可行
            //HasOptional(x => x.dept).WithMany(x => x.lstCamera).HasForeignKey(x => x.DeptId);
        }

EF多表查询

EF Linq To Sql 常用查询整理_常用使用方式整理

JAva泛型的讲解

泛型详解

public S CreatePageBase<S>() where S : Q_Base, new()
        {
            S s = CreateBase<S>();
            s.PageIndex = page;
            s.PageSize = rows;
            return s;
        }
private S CreateBase<S>() where S : new()
        {
            S s = new S();
            var par = typeof(S).GetProperties();
            foreach (var p in par)
            {
                //有其他类型在加
                //typeof(Nullable<>)
                if (p.PropertyType == typeof(int?))
                {
                    p.SetValue(s, GetParameter(p.Name).ToIntOrNull());
                }
                else if (p.PropertyType == typeof(string))
                {
                    p.SetValue(s, GetParameter(p.Name));
                }
                else if (p.PropertyType == typeof(DateTime?))
                {
                    p.SetValue(s, GetParameter(p.Name).ToDateOrNull());
                }
                else if (p.PropertyType == typeof(bool?))
                {
                    p.SetValue(s, GetParameter(p.Name).ToBoolOrNull());
                }
            }
            return s;
        }
public static ContentResult JsonFormat(object obj)
        {
            var cr = new ContentResult
            {
                Content =
                    JsonConvert.SerializeObject(obj, Formatting.Indented,
                        new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }),
                ContentEncoding = Encoding.UTF8,
                ContentType = "application/json"
            };
            return cr;
        }

下拉框

ComboBox即是下拉列表

属性:
Items属性:为下拉列表添加相应的项目,与列表框类似
DropDownStyle属性:控制组合框的外观和功能(此属性如果选择DropDownList则只可选择而不能再框中输入,若选择DropDown则即可在框中输入又可以进行选择)
Sorted属性:指定是否对组合框的列表部分中的项进行排序

/
/ 获取行政区数据
/
/
//public static List<T_DistrictModel> GetDistrictList()
//{
// var sql = “select Id,Name,ExtendStr1 DistCode from Department where ApplicationId=2 and ExtendStr=3 and IsDeleted=0”;
// var ds = MysqlHelper.ExecuteDataset(sql);
// if (ds != null && ds.Tables.Count > 0)
// {
// return DatatableHelper.DatatableToList<T_DistrictModel>(ds.Tables[0]);
// }
// return new List<T_DistrictModel>();
//}

异常类型

System.NullReferenceException:对象引用未设置为对象的实例。

1.安装vs 报错:未能连接到网络

1.在站长之家搜索aka.ms的DNS,http://tool.chinaz/dns/?type=1&host=aka.ms&ip=。注意TTL值越小越好,得到104.97.154.95 aka.ms。注意这个aka.ms对应的DNS会不断变化,需要不断更新.

2.在C:\Windows\System32\drivers\etc路径下修改hosts文件.

将104.97.154.95 aka.ms 加到 hosts 文件最后一行

如果无法更改hosts文件,右击hosts文件 – 属性 –

2.解决VS2019一直弹出调试窗口

删除本地文件夹 C:\Program Files (x86)\CMS Server\TransmitServer\StorageService 中的 storageService.exe文件。

3.error(待解决)

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project bigdata-redis-handler: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [Help 1] java.lang.NumberFormatException: For input string: "##"

4.关于backgroundworker执行程序,进度条一动不动

在backgroundworker的属性栏设置WorkReportsProgress属性为TRUE;
然后在backgroundworker的事件栏 为ProgressChanged勾选相应的事件;其他同理。

5.Redis密码中特殊字符解析报错(JAVA)

1.配置密码时,对密码encode,连接时对密码decode;
2.用特殊字符串替换无法解析的字符。

 @Configuration
public class RTInfoJedisConfig {
    @Value("${RealTimeInfo.redis.host}")
    private String host;

    @Value("${RealTimeInfo.redis.port}")
    private int port;

    @Value("${RealTimeInfo.redis.timeout}")
    private int timeout;
	
	//RealTimeInfo.redis.password = 123.#@@@csdn
    @Value("${RealTimeInfo.redis.password}")
    private String password;						//<---------------

    @Value("${RealTimeInfo.redis.database}")
    private int database;

    @Value("${RealTimeInfo.redis.pool.max-idle}")
    private int maxIdle;

    @Value("${RealTimeInfo.redis.pool.min-idle}")
    private int minIdle;

 @Primary
    @Bean(name = "RTInfoCFactory")
    public JedisConnectionFactory redisConnectionFactory() {
       String des =  URLEncoder.encode(".");
        JedisPoolConfig jedisPoolConfig = jedisPoolConfig();
        JedisConnectionFactory factory = new JedisConnectionFactory();
        factory.setHostName(host);
        factory.setPort(port);

        this.password = this.password.replace("@@@","{");
        this.password = this.password.replace("###","}");

        factory.setPassword(this.password);
        //存储的库
        factory.setDatabase(database);
        //设置连接超时时间
        factory.setTimeout(timeout);
        factory.setUsePool(true);
        factory.setPoolConfig(jedisPoolConfig);
        return factory;
    }

操作字符串

1.替换字符串头部的多个0

String str = str.replaceAll("^(0+)","");

⽅式⼆:
例如:”0000123”处理过程:
String str = “0000123”;
String newStr = str.replaceFirst("^0*", "");
System.out.println(newStr);
打印结果:123

2.截取子字符串

1、取字符串的前i个字符

(1)string str1=str.Substring(0,i);

(2)string str1=str.Remove(i,str.Length-i);

2、去掉字符串的前i个字符

string str1=str.Remove(0,i);

string str1=str.SubString(i);

3、从右边开始取i个字符:

string str1=str.SubString(str.Length-i);

string str1=str.Remove(0,str.Length-i);

4、从右边开始去掉i个字符:

string str1=str.Substring(0,str.Length-i);

string str1=str.Remove(str.Length-i,i);

6 、如果字符串中有"abc"则替换成"ABC"str=str.Replace(“abc”,“ABC”);

7、c#截取字符串最后一个字符的问题!!!!!!!!!!!!!!!!!!!!!

str1.Substring(str1.LastIndexOf(“,”)+1);

8、C# 截取字符串最后一个字符

k = k.Substring(k.Length-1, 1);

SQL语句

一、更新

1.update inner join (MSSQL)

语法:
update 表1 set [RouteId] = A.[Id] from 表2 A inner join 表1 B on A.RouteCode = B.RouteCode

update  [MPS_D_Disease] set [RouteId] = r.[Id] from [BMS_D_Route] r inner join [MPS_D_Disease] d on r.RouteCode = d.RouteCode

2.按条件批量更新

– t-sql

update BMS_D_AssetCameraInfo,[Tmp] set BMS_D_AssetCameraInfo.Lng = [Tmp].Lng,BMS_D_AssetCameraInfo.Lat= [Tmp].Lat where BMS_D_AssetCameraInfo.CameraName like '%'+[dbo].[Tmp].CameraName+'%'

– p-sql

update BMS_D_AssetCameraInfo 
set BMS_D_AssetCameraInfo.Lng =(select top 1  Lng  from [Tmp]  where BMS_D_AssetCameraInfo.CameraName like '%'+[dbo].[Tmp].CameraName+'%'),
 BMS_D_AssetCameraInfo.Lat =(select  top 1 Lat  from [Tmp]  where BMS_D_AssetCameraInfo.CameraName like '%'+[dbo].[Tmp].CameraName+'%')

3.备份数据库表

select * into 新表名 from [原表名]

--备份camera表到Test表
select * into BMS_D_AssetCameraInfo_Test from [BMS_D_AssetCameraInfo]

4. update

UPDATE ATmpDepartment  
SET DeptCode = s.DeptCode 
FROM ATmpDepartment t, YC_D_Department s  
WHERE s.DeptName  like '%'+ t.DeptName + '%'  

二、查询

0.sql查询某一字段为 null 的数据

where条件用 is null ,而不是 = null

elect * from YC_B_ObjectPoints where DataSouce is null

1.mysql/sql查询并统计数量

SELECT COUNT(*) FROM 表名 [...];”或“SELECT COUNT(字段名) FROM 表名 [...]

2.mysql/sql查询重复数据只显示一条

select distinct 列名 from 表名;
distinct关键字过滤掉多余的重复记录只保留一条。

3.查询表里出现重复village_code的记录

  1. select village_name,count(*) from gs_village_management group by id having count(village_code) = 1
  2. 使用别名as
    select village_name, count(*) as a from gs_village_management group by id having COUNT(village_code) > 1;
  3. 方法3:筛选全部字段,将符合的数据进行展示(不推荐,执行速度较慢)
    select * from employee where employee_name in ( select employee_name from employee group by employee_name having count(employee_name)>1);
  4. 查找全部重复记录
    Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
    例如:Select * From BMS_D_Route Where SourceId In (Select SourceId From BMS_D_Route Group By SourceId Having Count(*)>1) and SourceData = ‘GLJ’ order by Id
  5. 过滤重复记录(只显⽰⼀条)
    Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title
    注:此处显⽰ID最⼤⼀条记录

4.SQL语句查询字段里包含某个字符串

SELECT * FROM table WHERE 字段 like '%err%'; ------- 此外

5.一具体实例

select c.RouteCode+c.RouteName as RouteName,Direction,Lane,a.PavType,a.BeginMile,a.EndMile,RightIRI,LeftIRI,PresentIRI,CollectTime from RIA_D_IRI_1000 a join RIA_D_DetectProject b on a.ProjectId = b.Id left join RMS_D_Route c on a.RouteId = c.Id where a.RouteId= 13 and a.CollectTime like '%2015%'and a.BeginMile>=0 and a.EndMile<=7127

三、删除

1.删除重复数据

1。删除全部重复记录(慎⽤)
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
2。保留⼀条(这个应该是⼤多数⼈所需要的 _)
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
注:此处保留ID最⼤⼀条记录
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最⼩的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最⼩的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最⼩的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

补充:
有两个以上的重复记录,⼀是完全重复的记录,也即所有字段均重复的记录,⼆是部分关键字段重复的记录,⽐如Name字段重复,⽽其他
字段不⼀定重复或都重复可以忽略。
1、对于第⼀种重复,⽐较容易解决,使⽤
select distinct * from tableName
就可以得到⽆重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下⽅法删除
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp
发⽣这种重复的原因是表设计不周产⽣的,增加唯⼀索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第⼀条记录,操作⽅法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯⼀的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
————————————————
版权声明:当前部分为CSDN博主「高级盘丝洞」的原创文章
原文链接:https://blog.csdn/weixin_42023748/article/details/126244008

2.删除操作

1、delete语句用于删除表中的行;2、drop 【删除表】删除内容和定义,释放空间;3、truncate【清空表中的数据】,删除内容、释放空间但不删除定义。

1、delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存
语法:DELETE FROM 表名称 WHERE 列名称 = 值
如:删除student表中姓名为张三丰的学生信息-delete from studentwhere name=‘张三丰’;

2、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

3、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。
注意:truncate 不能删除行数据,要删就要把表清空。
语法:truncate table 表名

四、插入

1.INSERT INTO SELECT语句

语句形式为:Insert into 表2(字段1,字段2,...) select 字段1,字段2,... from 表1

或者:Insert into 表2 select * from 表1

注意:
(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在
(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键
(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

2.SELECT INTO FROM语句

语句形式为:SELECT 字段1, 字段2 into 表2 from 表1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

8.注意事项

从链接服务器NLJ的数据库DB_1025的表RMS_D_Route中复制数据到目标数据库。

--路线 
insert into 表A
		select id as SourceId, FeatureId, 3148 as DeptId, RouteCode, RouteName, RouteCharacter, TechLevel,  
		 BeginMile, BeginName, EndMile, EndName, RouteLength, MaxLaneNum, [Description], CreateTime,
		  CreateUserId, ModifyTime, ModifyUserId, DeleteTime, DeleteUserId, DeleteState
		from B服务器.表B;

对C盘进行清理

此电脑 --> 设置 --> 系统 --> 存储

在一个解决方案中添加类库的正确方式

点击解决方案 — 右键添加 — 新建项目 — 选择C#类库

Invoke

Invoke:在主线程外面的子线程中实现控制UI;
Invoke括号中的就是控制UI控件要做的事情.因为在子线程中是不允许直接控制UI的,UI只属于主线程.
Invoke(new Action(() => label2.Text = Convert.ToString((Convert.ToInt16(label2.Text) - 1 )))); //Linq写法
直接写label2.Text可能会报错.

string.format

label3.Text = string.Format(“DoWork运行线程ID为:{0}”, DoWorkID);

声明委托(Delegate)

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。
例如,假设有一个委托:public delegate int MyDelegate (string s);
上面的委托可用来引用任何一个带有一个单一的 string 参数的方法,并返回一个 int 类型变量。
声明委托的语法如下:delegate <return type> <delegate-name> <parameter list>;

channel

vs快捷键

format代码:

  1. 方法一:全选代码后按住Ctrl+K,Ctrl+F键(左手按住Ctrl键,右手先按下K键再按下F键),代码就会自动格式化。
  2. 方法二:全选代码后按住Ctrl+K,Ctrl+D键(左手按住Ctrl键,右手先按下K键再按下D键),代码也会自动格式化。

注释:Ctrl+K,Ctrl+C。

取消注释: Ctrl+K,Ctrl+U。

单步调试:F10
快速调试:F5
查看代码:F12

idea快捷键

单步调试:F8F7
急速调试:F9
format代码:Ctrl+Alt+L
注释代码:Ctrl+/
全局查找:Ctrl+Shift+F(偶尔是:打开/关闭繁体输入,原因是与搜狗输入法的快捷键冲突了)
全局查找:Shift+Shift
热部署重启代码:Ctrl+Shift+F9
删除光标所在行:Ctrl+Y
关闭当前代码页面:Ctrl+F4
A:以下是 IntelliJ IDEA 的常用快捷键列表:

1.基础快捷键

Ctrl + C:复制选定的文本或对象
Ctrl + X:剪切选定的文本或对象
Ctrl + V:粘贴剪贴板的内容
Ctrl + Z:撤销最后的操作
Ctrl + Y:重做上一次撤销的操作
Ctrl + A:选择全部文本或对象
Ctrl + F:在文本或对象中查找指定内容
Ctrl + G:跳转到指定行

2.编辑快捷键

Ctrl + D:复制当前行或选定的行
Ctrl + W:逐渐扩大选定范围
Ctrl + Shift + W:逐渐缩小选定范围
Ctrl + Shift + V:从最近的剪贴板中选择内容并插入
Ctrl + Shift + 上/下箭头:移动当前行或选定行

3.运行和调试快捷键

Shift + F10:运行当前项目
Shift + F9:调试当前项目
F8:单步执行,进入当前方法
F7:单步执行,不进入当前方法
Ctrl + F8:在当前行断点开关

4.代码导航和切换快捷键

Ctrl + N:查找类
Ctrl + Shift + N:查找文件
Ctrl + Alt + Shift + N:查找符号
Ctrl + B:跳转到声明处
Ctrl + Alt + B:跳转到实现处
Ctrl + Alt + Left/Right:后退/前进
Alt + F7:查找用法

5.注释和格式化快捷键

Ctrl + /:单行注释或撤销单行注释
Ctrl + Shift + /:块注释
Ctrl + Shift + Alt + T:在选定的代码上下文中插入代码
Ctrl + Alt + L:格式化代码

6.Ctrl + O:重写方法

Ctrl + I:实现方法
Alt + Enter:提示修复代码
Ctrl + Alt + L:格式化代码
Ctrl + D:复制选中代码行
Ctrl + Alt + T:添加代码块
Ctrl + Shift + T:打开类/文件
Ctrl + F:查找
Ctrl + Shift + F:在工程中查找
Ctrl + /:注释选中代码行
Ctrl + Shift + /:注释代码块
Ctrl + Alt + V:生成局部变量
Ctrl + Alt + M:将代码块封装成方法
Ctrl + Alt + N:在选中代码行添加变量
Ctrl + Alt + Shift + V:将剪贴板内容生成变量

本文标签: 释义快捷键时差字符串单词