网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

使用C#创建Point类型

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

--
--9.8.1节示例
--

//使用C#创建Point类型
using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
//以下Attribute标明结构体Point是可序列化的,作为用户定义数据类型使用
[Serializable]
[SqlUserDefinedType(Format.Native)]
public struct Point : INullable //用户定义类型必须满足接口INullable
{
//以下是定义结构体的内部变量和属性
    private Int32 x;
    private Int32 y;
    private bool is_Null;
    public Int32 X //X坐标
    {
        get        {            return (this.x);        }
        set        {            x = value;        }
    }
    public Int32 Y //Y坐标
    {
        get        {            return (this.y);        }
        set        {            y = value;        }
    }
    public bool IsNull //是否为空
    {
        get        {            return is_Null;        }
    }
    public static Point Null //定义一个空对象属性
    {
        get
        {
            Point pt = new Point();
            pt.is_Null = true;
            return pt;
        }
}
//重写ToString方法,指明在以字符串形式输出该类型时输出的内容
    public override string ToString()
    {
        if (this.IsNull)
        {
            return "NULL"; //输出NULL字符串
        }
        else
        {
            return this.x + "," + this.y;//输出x,y的形式表示一个二维点
        }
    }
    public double Len() //定义函数Len,用于返回该点到原点的距离
    {
        if (IsNull)
        {
            return 0;
        }
        return Math.Sqrt(x * x + y * y);
    }
//定义静态函数Parse,指明如何将字符串转换为该用户定义数据类型
    public static Point Parse(SqlString s)
    {
        if (s.IsNull) //如果传入为空,则返回空
        {
            return Null;
        }
        string str = s.Value;
        string[] xy = str.Split(',');
        Point pt = new Point();
        pt.X = Convert.ToInt32(xy[0]);
        pt.Y = Convert.ToInt32(xy[1]);
        return pt; //返回Point对象
    }
}

--创建CLR用户定义类型
CREATE TYPE Point --创建用户定义数据类型
EXTERNAL NAME [TestSQLAssembly].Point --指定该数据类型在程序集中的位置
--或者可以直接简写为:
CREATE TYPE Point
EXTERNAL NAME [TestSQLAssembly]

--使用CLR用户定义类型
CREATE TABLE testPoint --创建一个测试表
(
 c1 Point--使用CLR用户定义数据类型作为c1的数据类型
)
GO
INSERT INTO testPoint VALUES('12,2') --插入一些值
INSERT INTO testPoint VALUES('12,4')
INSERT INTO testPoint VALUES('3,4')
GO
SELECT c1.X AS X,c1.Y AS Y,c1.Len() AS LEN --调用CLR数据类型定义的属性和方法
FROM testPoint
 

  • 上一篇资讯: RAW模式返回XML代码
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师