donet学习笔记7(数据库的增删改查.dataview的运用)

article/2025/9/10 8:35:59
1.数据库前台设计:非常简单,建立一个表即可
create   table  person
(
  pID 
varchar ( 10 primary   key ,
  personName 
varchar ( 20 not   null ,
  personSex 
varchar ( 2 ) ,
)
2.前台设计:
有两个textbox负责输入编号,姓名,性别用radiobutton做.然后每一个拦位都有一个checkbox的选择框选择是否作为查询条件
四个Button控制增,删,改,查
一个datagrid用于显示数据
具体ASP代码如下:
<% @ Page Language = " C# "  AutoEventWireup = " true "   CodeFile = " Default.aspx.cs "  Inherits = " _Default "   %>

<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >

< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head runat = " server " >
    
< title > Untitled Page </ title >
</ head >
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
        
< asp:RadioButton ID = " RadioButtonFemale "  runat = " server "  GroupName = " sex "  Style = " z-index: 100;
            left: 233px; position: absolute; top: 143px "  Text= " "  />
         & nbsp; & nbsp;
        
< asp:Button ID = " ButtonUpdate "  runat = " server "  Style = " z-index: 101; left: 97px; position: absolute;
            top: 197px "  Text= " 修改 "  OnClick= " ButtonUpdate_Click "  />
     </ div >
        
< asp:DataGrid ID = " DataGridShow "  runat = " server "  AutoGenerateColumns = " True "  
            Style
= " z-index: 102; left: 84px; position: absolute;
            top: 251px "  Height= " 174px "  Width= " 313px " ></asp:DataGrid>
         & nbsp; & nbsp;
        
< asp:Label ID = " Label1 "  runat = " server "  Height = " 20px "  Style = " z-index: 103; left: 78px;
            position: absolute; top: 83px "  Text= " 编号: "  Width= " 75px " ></asp:Label>
         < asp:TextBox ID = " TextBoxNum "  runat = " server "  Style = " z-index: 104; left: 167px; position: absolute;
            top: 83px " ></asp:TextBox>
         < asp:Label ID = " Label2 "  runat = " server "  Style = " z-index: 105; left: 82px; position: absolute;
            top: 112px "  Text= " 姓名: " ></asp:Label>
         < asp:TextBox ID = " TextBoxName "  runat = " server "  Style = " z-index: 106; left: 168px; position: absolute;
            top: 114px " ></asp:TextBox>
         < asp:Label ID = " Label3 "  runat = " server "  Style = " z-index: 107; left: 82px; position: absolute;
            top: 141px "  Text= " 性别 " ></asp:Label>
         < asp:RadioButton ID = " RadioButtonMale "  runat = " server "  Checked = " True "  GroupName = " sex "
            Style
= " z-index: 108; left: 173px; position: absolute; top: 142px "  Text = " "   />
        
< asp:Button ID = " ButtonInsert "  runat = " server "  OnClick = " ButtonInsert_Click "  Style = " z-index: 109;
            left: 95px; position: absolute; top: 171px "  Text= " 添加 "  />
         < asp:CustomValidator ID = " CustomValidator1 "  runat = " server "  ControlToValidate = " TextBoxNum "
            Display
= " Dynamic "  ErrorMessage = " 该用户已经存在 "  OnServerValidate = " CustomValidator1_ServerValidate "
            Style
= " z-index: 110; left: 309px; position: absolute; top: 84px " ></ asp:CustomValidator >
        
< asp:RequiredFieldValidator ID = " RequiredFieldValidator1 "  runat = " server "  ControlToValidate = " TextBoxName "
            ErrorMessage
= " * "  Style = " z-index: 111; left: 313px; position: absolute; top: 117px " ></ asp:RequiredFieldValidator >
        
< asp:RequiredFieldValidator ID = " RequiredFieldValidator2 "  runat = " server "  ControlToValidate = " TextBoxNum "
            ErrorMessage
= " * "  Style = " z-index: 112; left: 431px; position: absolute; top: 82px " ></ asp:RequiredFieldValidator >
        
< asp:Button ID = " ButtonDelete "  runat = " server "   Style = " z-index: 113;
            left: 270px; position: absolute; top: 173px "  Text= " 删除 "  OnClick= " ButtonDelete_Click "  />
         < asp:Button ID = " ButtonSelect "  runat = " server "  OnClick = " ButtonSelect_Click "
            Style
= " z-index: 114; left: 271px; position: absolute; top: 195px "  Text = " 查询 "   />
        
< asp:CheckBox ID = " CheckBoxPID "  runat = " server "  Style = " z-index: 115; left: 454px; position: absolute;
            top: 83px "  />
         < asp:CheckBox ID = " CheckBoxName "  runat = " server "  Style = " z-index: 116; left: 440px;
            position: absolute; top: 110px "  />
         < asp:CheckBox ID = " CheckBoxSex "  runat = " server "  Style = " z-index: 118; left: 447px; position: absolute;
            top: 140px "  />
     </ form >
</ body >
</ html >

3.后台代码:
后台分为ASP的前台页面自身CS文件(Default.asp.cs),实体类文件(person.cs),和实体类操作(personOperator.cs)文件,代码如下:
person.cs
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   class  person
{
    
public string pID;
    
public string pName;
    
public  string pSex;
    
public person()
    
{
    }

}

personOperate.cs
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data;
using  System.Data.SqlClient;


public   class  personOperate
{
    
public personOperate()
    
{
    }

    
//创建连接
    public static SqlConnection createConnection()
    
{
        
return new SqlConnection("server=.;database=adoNetTest;uid=sorry0208;pwd=sorry0208;");
    }

    
//查询是否有该用户存在
    public static bool findPerson(string pID)
    
{
        SqlConnection conn 
= personOperate.createConnection();
        conn.Open();
        SqlCommand cmd 
= new SqlCommand("select count(*) from person where pID = '" + pID + "'",conn);
        
int count = Convert.ToInt32(cmd.ExecuteScalar());
        
if (count > 0)
        
{
            
return true;
        }

        
else
        
{
            
return false;
        }

    }

    
//选择所有用户,返回一个数据表集合
    public static DataTable selectAllPerson()
    
{
        SqlConnection conn 
= personOperate.createConnection();
        
//用适配器操作的时候不需要打开connection,如果发现没有打开它会自动打开
        
//conn.Open();
        
//数据库适配器.
        SqlDataAdapter sda = new SqlDataAdapter();
        sda.SelectCommand 
= new SqlCommand("select * from person",conn);
        
//创建数据集
        DataSet ds = new DataSet();
        
//填充:第二个参数为表名
        sda.Fill(ds, "person");
        
//取出了所有数据库中的person表的所有字段
        return ds.Tables["person"];
    }

    
//修改表
    public static bool updateOperator(person p)
    
{
        
try
        
{
            SqlConnection conn 
= personOperate.createConnection();
            conn.Open();
            SqlCommand cmd 
= new SqlCommand("update  person set personName = '" + p.pName + "', personSex = '" + p.pSex + "' where pID = " + p.pID, conn);
            cmd.ExecuteNonQuery();
            
return true;
        }

        
catch(Exception e)
        
{
            
            
return false;
        }

    }

    
//删除表
    public static bool deleteOperator(String pID)
    
{
        
try
        
{
            SqlConnection conn 
= personOperate.createConnection();
            conn.Open();
            SqlCommand cmd 
= new SqlCommand("delete  person where pID =  "+pID, conn);
            cmd.ExecuteNonQuery();
            
return true;
        }

        
catch (Exception e)
        
{
            
return false;
        }


    }

    
//插入表
    public static bool insertOperator(person p)
    
{
        
try
        
{
            SqlConnection conn 
= personOperate.createConnection();
            conn.Open();
            SqlCommand cmd 
= new SqlCommand("insert into person values(@pID,@pName,@pSex)", conn);
            SqlParameter para 
= new SqlParameter("@pID", SqlDbType.VarChar, 10);
            para.Value 
= p.pID;
            cmd.Parameters.Add(para);
            para 
= new SqlParameter("@pName", SqlDbType.VarChar, 20);
            para.Value 
= p.pName;
            cmd.Parameters.Add(para);
            para 
= new SqlParameter("@pSex", SqlDbType.VarChar, 2);
            para.Value 
= p.pSex;
            cmd.Parameters.Add(para);
            cmd.ExecuteNonQuery();
            
return true;
        }
catch(Exception e) {
            
return false;
        }

    }

}


Default.asp.cs

using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;
public  partial  class  _Default : System.Web.UI.Page 
{
    
protected void Page_Load(object sender, EventArgs e)
    
{

    }

    
//服务器端验证,查询输入的用户是否已经存在
    protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    
{
        
string pID = args.Value;
        
if (personOperate.findPerson(pID))
        
{
            args.IsValid 
= false;
        }

        
else
        
{
            args.IsValid 
= true;
        }


    }

    
//对DataGrid做绑定.绑定到一张表上边去
    private void fillDg()
    
{
        DataGridShow.DataSource 
= personOperate.selectAllPerson();
        DataGridShow.DataBind();
    }

    
//insert按纽出发新增事件
    protected void ButtonInsert_Click(object sender, EventArgs e)
    
{
        
if (this.IsValid)
        
{
            person p 
= new person();
            p.pID 
= TextBoxNum.Text;
            p.pName 
= TextBoxName.Text;
            
if (RadioButtonMale.Checked)
            
{
                p.pSex 
= "";
            }

            
else
            
{
                p.pSex 
= "";
            }

            
if (personOperate.insertOperator(p))
            
{
                Response.Write(
"插入成功");
                
this.fillDg();
            }

            
else
            
{
                Response.Write(
"插入失败");
            }


        }

    }

    
//update按纽出发修改事件
    protected void ButtonUpdate_Click(object sender, EventArgs e)
    
{
        
//如果验证空间的值为假,就表示用户存在,就可以修改
        if (!this.CustomValidator1.IsValid)
        
{
            person p 
= new person();
            p.pID 
= TextBoxNum.Text;
            p.pName 
= TextBoxName.Text;
            
if (RadioButtonMale.Checked)
            
{
                p.pSex 
= "";
            }

            
else
            
{
                p.pSex 
= "";
            }

            
if (personOperate.updateOperator(p))
            
{
                Response.Write(
"修改成功");
                
this.fillDg();
            }

            
else
            
{
                Response.Write(
"修改失败");
            }


        }

    }

    
//delete按纽出发删除事件
    protected void ButtonDelete_Click(object sender, EventArgs e)
    
{
        
string id = TextBoxNum.Text;
        
if (personOperate.deleteOperator(id))
        
{
            Response.Write(
"删除成功");
            
this.fillDg();
        }

        
else
        
{
            Response.Write(
"删除失败");
        }

    }

    
//select按纽触发查询事件
    protected void ButtonSelect_Click(object sender, EventArgs e)
    
{
        
string condition="";
        
if (this.CheckBoxPID.Checked)
        
{
                condition 
= "pID = " + TextBoxNum.Text;

        }

        
else
        
{
            condition 
= "pID like '%'";
        }

        
if (CheckBoxName.Checked)
        
{
            condition 
+= " and personName like '%"+TextBoxName.Text+"%'";
        }

        
if (CheckBoxSex.Checked)
        
{
            
if (RadioButtonMale.Checked)
            
{
                condition 
+= "and personSex = '男'";
            }

            
else
            
{
                condition 
+= "and personSex = '女'";
            }

        }

        
//DataView是作为一个视图查询,过滤表生成视图
        
//DataView必须基于datatable建立,而personOperate.selectAllPerson()的返回值就是一个datatable
        DataView dv = new DataView(personOperate.selectAllPerson());
        
//设置过滤器,设置过滤条件
        dv.RowFilter = condition;
        
// 设置排序条件
        dv.Sort = "pID Desc";
        DataGridShow.DataSource 
= dv;
       DataGridShow.DataBind();
    }

}



转载于:https://www.cnblogs.com/sorry208/articles/925533.html


http://chatgpt.dhexx.cn/article/fk6yMn9F.shtml

相关文章

OpenCV学习笔记:KeyPoint和DMatch数据结构详解

近期事情太多了&#xff0c;课业也繁多&#xff0c;好久没更了&#xff0c;今天对OpenCV中经常用到的一些数据类型的结构进行一波分析&#xff0c;为自己做记录的同时也分享给大家。闲言少叙&#xff0c;开始操作。 一、KeyPoint 数据结构 angle //关键点的方向&#x…

The Center of Attention: Center-Keypoint Grouping via Attention for Multi-Person Pose Estimation

该论文发表于ICCV2021 本文是将Transformer应用于关键点分组的创新工作。实际上是自底向上方法中分组操作的优化&#xff0c;利用Transformer进行关键点分组&#xff0c;达到端到端训练与加快模型推理速度的效果。并且&#xff0c;在拥挤图像中&#xff0c;该方法能够拥有更好…

计算机视觉论文速递(六)GANet: A Keypoint-based Global Association Network for Lane Detection 基于关键点建模的全局关联网络

计算机视觉论文速递&#xff08;六&#xff09;GANet: A Keypoint-based Global Association Network for Lane Detection 基于关键点建模的全局关联网络 1. 摘要2. 方法动机3. 方法介绍3.1 车道线构建-全局关键点关联3.1.1关键点预测3.1.2 偏移量预测3.1.3 起始点采样 3.2 车道…

torchvision使用keypoint rcnn 进行人体关键点定位

系统&#xff1a;Windows 11 pytorch版本&#xff1a;1.11.0 torchvision版本&#xff1a;0.12.0 使用图片地址&#xff1a;vision/person1.jpg at main pytorch/vision GitHub 使用代码&#xff1a; import torch import torchvision.transforms from torchvision.model…

CenterNet: Keypoint Triplets for Object Detection

论文地址&#xff1a;https://arxiv.org/pdf/1904.08189.pdf 在本文中&#xff0c;作者将一个对象建模为一个单点&#xff0c;即其包围框的中心点。并使用关键点估计来找到中心点&#xff0c;并回归到所有其他对象属性&#xff0c;如大小、3D位置、方向&#xff0c;甚至姿势。C…

COCO数据集keypoint部分

COCO数据集总体格式如下&#xff1a; {"info": {...},"licenses": [...],"images": [...],"annotation": [...],"categories": [...], }coco数据集的使用&#xff1a; from pycocotools.coco import COCO import matplotl…

Rethinking Keypoint Representations: Modeling Keypoints and Poses as Objects for Multi-Person Human

该论文发表于ECCV2022 题目&#xff1a;重新思考关键点表征方法&#xff1a;将关键点和人体姿态作为目标建模以进行多人姿态估计 Abstract In keypoint estimation tasks such as human pose estimation,heatmap-based regression is the dominant approach despite possess…

[1] A Keypoint-based Global Association Network for Lane Detection

A Keypoint-based Global Association Network for Lane Detection 0. 摘要 概括车道线检测方法&#xff1a; &#xff08;1&#xff09;基于Anchor定位的方法&#xff0c;自顶向下根据路线图把预设定的Anchor回归到车道线上。缺点是对复杂车道线不够灵活&#xff1b; &#…

cv::KeyPoint中response的介绍

1. Opencv中的KeyPoint类介绍 KeyPoint类的构造函数如下: KeyPoint(); KeyPoint(Point2f _pt, float _size, float _angle-1, float _response0, int _octave0, int _class_id-1); KeyPoint(float x, float y, float _size, float _angle-1, float _response0, int _octave0…

11种Anchor-free目标检测综述 -- Keypoint-based篇

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 导读 anchor-free目标检测算法分为两种&#xff0c;一种是DenseBox为代表的Dense Prediction类型&#xff0c;另一种则是以CornerNet为代表的Keypoint-bsaed Detection类型&#xff0c;以检测目标关键点为主…

SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation

动机&#xff1a; in this paper that predicts a 3D bounding box for each detected object by combining a single keypoint estimate with regressed 3D variables. As a second contribution, we propose a multi-step disentangling approach for constructing the 3D b…

《PCL Docs 案例详解》KeyPoint——SIFT 关键点提取

SIFT 关键点提取 本节演示如何检测点云的SIFT 关键点。SIFT 即尺度不变特征变换&#xff08;Scale-invariant feature transform,SIFT) ,最初用于图像处理领域的一种描述。这种描述具有尺度不变性&#xff0c;可以在图像中检测出关键点&#xff0c;是一种局部特征描述。 完整…

OpenCV中KeyPoint类

https://blog.csdn.net/u010821666/article/details/52883580 Opencv中KeyPoint类中的默认构造函数如下&#xff1a; CV_WRAP KeyPoint() : pt(0,0), size(0), angle(-1), response(0), octave(0), class_id(-1) {} 现分析各项属性 pt(x,y):关键点的点坐标&#xff1b; si…

Anchor-free目标检测综述 -- Keypoint-based篇

早期目标检测研究以anchor-based为主&#xff0c;设定初始anchor&#xff0c;预测anchor的修正值&#xff0c;分为two-stage目标检测与one-stage目标检测&#xff0c;分别以Faster R-CNN和SSD作为代表。后来&#xff0c;有研究者觉得初始anchor的设定对准确率的影响很大&#x…

Opencv中特征点Keypoint的解读(特征点与坐标的相互转换)

Opencv中特征点Keypoint的解读 特征点的生成特征点到坐标的转换坐标到特征点的转换 在我们学习特征点检测时&#xff0c;使用特征点检测器&#xff0c;比如ORB和SIFT生成特征点(FAST和SURF好像已经申请专利&#xff0c;较新版本可能用不了)&#xff0c;通常生成的特征点形式是一…

COCO数据集Keypoint标注格式梳理和使用COCO-Annotator在自有数据集上进行标注

这里写自定义目录标题 COCO数据集Keypoint标注格式COCO数据集官网Keypoint Detection关键点检测统一数据格式Keypoint标注 使用COCO-Annotator标注自有数据集在Ubuntu 18.04上安装COCO-Annotator安装Docker和Docker-Compose安装COCO Annotator启动COCO Annotator使用COCO Annot…

OpenCV学习之KeyPoint

OpenCV中CV_EXPORTS类别KeyPoint与KeyPointsFilter头文件分析 用OpenCV一段时间了&#xff0c;说实话KeyPoint接触也算比较多&#xff0c;一直没有时间对其数据结构进行分析。今天打开源码对其keypoint.cpp文件进行简单分析一下&#xff1a;keypoint.cpp主要包含两个类KeyPoint…

ubuntu引导删除+win10引导修复

Windowsubuntu双系统&#xff0c;删除安装linux磁盘后没有删除其引导&#xff0c;删其引导的步骤为 使用快捷键winx&#xff0c;打开Windows PowerShell(管理员)(A)&#xff0c;依次输入如下命令&#xff1a; 打开diskpart diskpart 列出系统中所有的磁盘 list disk 选择…

win10+ubuntu18.04 双系统修复ubuntu启动引导

win10ubuntu18.04 双系统修复ubuntu启动引导 因为windows是不能引导linux的&#xff0c;而每次win10升级或恢复都会将linux的启动引导覆盖掉&#xff0c;导致无法进入linux, 所以一直就禁止了win10更新&#xff0e;这几天win10出了点小毛病&#xff0c;所以就狠下心来恢复了系…

ubuntu 双系统启动引导修复

1、 准备一个安装&#xff35;盘&#xff0c;插入电脑开机>选择U盘启动>选择试用Try ubuntu without install。 2、 进入系统后&#xff0c;用CtrlAltT快捷键打开终端&#xff0c;获取root权限&#xff0c;执行以下命令&#xff1a; sodu passwd sudo apt-get install s…