sqlserver基础

sqlserver基础

* 批量修改

1、完整实例

- 前台index.cshtml,注意使用ajax要用Guget添加ajax包,使用layer要添加layer.css和layer.js文件

<form style="MARGIN-TOP: 60PX">
    <div class="row">
        @Html.Label("姓名:")@Html.TextBox("name")
    </div>
    <div class="row">
        @Html.Label("年龄:")@Html.TextBox("age")
    </div>
    <div class="row">
        @Html.Label("性别:") &nbsp; @Html.Label("女")@Html.RadioButton("sex", "女") @Html.Label("男")@Html.RadioButton("sex", "男")
    </div>
    <div calss="row">
        <input type="button" value="提交" onclick="Save()" />
    </div>
</form>
<div id="result" />

@section Scripts{
    <script>
        function Save() {
            $.ajax({
                type: 'post',
                url: '@Url.Action("Save", "DB")',
                data: $("form").serialize(),  //将表单数据转化为json字符串
                success: function (data) {
                    $("#result").html(data);
                    layer.msg("成功!");
                },
                error: function () {
                    layer.msg("错误!")
                }
            });
        }
    </script>
}
前台代码

-后台代码:

[HttpPost]
        public ActionResult Save(string name, int age, string sex)
        {
            DataTable dtAdd = new DataTable();
            dtAdd.Columns.Add("name");
            dtAdd.Columns.Add("age");
            dtAdd.Columns.Add("sex");

            var dr = dtAdd.NewRow(); //先新增一行
            dr["name"] = name;
            dr["age"] = age;
            dr["sex"] = sex;
            dtAdd.Rows.Add(dr); //将新增的一行添加到DataTable中

            var flag = false;
            if(dtAdd.Rows.Count > 0)  //如果有数据才新增
                flag = SqlHelper.AddBulkCopy(dtAdd);

            //返回JosnResult在API中自动有这个对象
            return new JsonResult() {ContentType="application/json",Data=flag };
        }
后台代码

- 连接数据库类文件

private static readonly string Constr = ConfigurationManager.ConnectionStrings["hxh"].ToString();

/// <summary>
        /// 批量添加数据
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static bool AddBulkCopy(DataTable dt)
        {
            using (SqlConnection c = new SqlConnection(Constr))
            {
                c.Open(); //代开连接
                using (SqlTransaction tran = (SqlTransaction)c.BeginTransaction())
                {
                    using(SqlBulkCopy sqlbulkcopy = new SqlBulkCopy((SqlConnection)c, SqlBulkCopyOptions.KeepIdentity, tran))
                    {
                        sqlbulkcopy.DestinationTableName = "student"; //表名
                        for(int i=0; i<dt.Columns.Count; i++)
                        {
                            sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
                        }
                        sqlbulkcopy.BatchSize = 50000;
                        try
                        {
                            sqlbulkcopy.WriteToServer(dt);
                            tran.Commit();
                            return true;
                        }
                        catch
                        {
                            tran.Rollback();
                            return false;
                        }
                    }
                }
                
            }
        }
批量添加的方法

-sqlserver连接字符串

<connectionStrings>
    <add name="hxh" connectionString="Server=DESKTOP-OCGH29Q;database=xx;integrated security=true;Connection Timeout=30;" providerName="System.Data.SqlClient" />
  </connectionStrings>
window身份验证
 <add name="Connection_Web_DB" connectionString="Server=cs6.tp33.net,14789;database=T21W;uid=Test_DF;pwd=FbZdbNT*Y9p1h6Tg;" providerName="System.Data.SqlClient" />
sqlserver身份验证

* sql语句

1、sql常用语句

-- 注意用了group by 之后,这里要与聚合函数联合使用,例如 max(f_id)
select k.* from(
        select min(d.f_type) as f_type, f_user, max(f_surplus) as f_surplus, min(f_checkTime) as f_checkTime, 
        min(f_errorMoney) as f_errorMoney, max(d.f_paytype)  as f_paytype, max(y.f_id)  as f_id,
        max(y.f_isExchange) as f_isExchange, max(y.f_state)  as f_state,
        count(case  when  isnull(d.f_state,0) = 1 then 1 end) as f_succNum ,    -- 新写法
        count(case  when isnull(d.f_state,0) <> 1 then 1 end) as f_faildNum,    -- 新写法
        count(case  when isnull(d.f_state,-1) = -1 then 1 end) as f_faildrz,
        count(case  when isnull(d.f_state,-1) = 0 then 1 end) as f_faildcl  
        from [dbo].[t_DeltaOnline] d with(nolock) 
        inner join 
        t_YeePayAccounts y with(nolock) on y.f_id = d.f_fkzl 
        where isnull(d.f_del,0)=0 and ISNULL(Y.f_del,0)<>1 and ISNULL(Y.f_del,0)<>2   -- ISNULL(Y.f_del,0)<>2
        group by f_user ) k where  k.f_user = '豪汇支付宝-测试商户'
case when
  if exists
    (select * from t_Mypurse with(nolock) where f_payin = 1   and f_otherAccounts is not null and datediff(hh,f_time,getdate())< 48) select 1 
  else select 0
if else
 DateDiff(dd,f_time,getdate())=0  -- 当天
 datediff(hh,f_time,getdate())< 48  --48小时内
时间
-- charindex('', column) <=0 和 not like的意思一样,%匹配多个字符
select f_id, f_showname from t_Banks with(nolock) 
      where charindex('',f_showname)<=0 and  f_MasterID=0 
      and (f_number<5000 or (f_number > 10000 and f_number <=11000))  and isnull(f_del,0)=0 
      and  (f_showname like '%[A-D]%'  or f_showname like '%F%' )   ORDER BY f_number ASC
模糊匹配
-- 银行取款修改暂停分配, 0和1之间的切换
update t_admin set f_stop=1- isnull(f_stop,0) where f_accounts='' and isnull(f_del,0)=0

select * from t_ExchangeSet;
-- 根据类型获取自动讯息
 select f_id,f_msgType from t_autoMsgSet with(nolock)  where  f_type = 1 and f_target & 16 = 16 
特殊
-- 具有分笔的母单id
select f_id from t_exchange t where exists (
    select f_money,f_fee,f_status,f_serial,f_bookCode from t26w.dbo.t_subCash where f_serial = t.f_id and f_type=1 and f_status in (2, 3, 4, 6) 
) order by f_id asc;
exists
SELECT Bank.f_ShowName as MemberBankName , BankLevel.f_majordomo ,BankLevel.f_StupeSurplus FROM 
    t_Banks_Level as BankLevel with(nolock) 
    left join 
    t_Banks as Bank with(nolock) 
    on BankLevel.f_BanksID=Bank.f_id 
    WHERE Bank.f_ShowName is not NULL and isnull(bank.f_del,0)=0 and isnull(f_Sort,0) <=100 
    AND (  -- or外层要用()
            ( f_majordomo = 'F' AND f_StupeSurplus = 7000) OR( f_majordomo = 'F' AND f_StupeSurplus = 7000) OR
            ( f_majordomo = 'Q' AND f_StupeSurplus = 1001) OR( f_majordomo = '测试' AND f_StupeSurplus = 5001) OR
            ( f_majordomo = '测试' AND f_StupeSurplus = 5001) OR( f_majordomo = '测试' AND f_StupeSurplus = 5001)
    )   -- or外层要用()
or
if exists (select f_id from t_banks ) select 1
else select 0;
use master;  -- 使用哪个数据库
select * from xx.dbo.BookInfo;  --从xx数据库查数据
CONVERT(data_type(length), data_to_be_converted, styleId); 
Convert()函数
ISNULL(A, B); 
ISNULL()函数

 

2、dbLink的使用

posted on 2018-06-23 18:10 莫伊筱筱 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值