asp.net2.0中的些许技巧和文章

 

      水晶报表的关键代码   

 

    sqlstr = "select * from opensrc";
        //得到DataTable
        DataTable dt = dbas.CurrentDt(sqlstr);
        //数据绑定到crs
        crsrc.ReportDocument.Load(Server.MapPath("crp.rpt"));
        crsrc.ReportDocument.SetDataSource(dt);
        crsrc.DataBind();
   //绑定到crv
        crview.ReportSource = crsrc;
        crview.DataBind();

webconfig 配置 

    <appSettings>
     <add key="CrystalImageCleaner-AutoStart" value="true" />
     <add key="CrystalImageCleaner-Sleep" value="60000" />
     <add key="CrystalImageCleaner-Age" value="120000" />
 </appSettings>
 <connectionStrings>
  <!--链接SQL Server数据库的链接字符串-->
  <add name="testConn" connectionString="data Source=nethawk;database=test;user id=sa;pwd=hawk001" providerName="System.Data.SqlClient"></add>
 </connectionStrings>

 

  • 转换运算符定义了一种从一个类类型到另外一个类类型的转换
  • 隐式转换自动调用,显式转换需要通过一个强制转换来调用
  • 隐式转换只用于不会发生错误的情况
    1. 不能发生丢失信息(截断、溢出、或丢失符号等)
    2. 转换不会抛出异常
  • 使用转换运算符的限制
    1. 不能创建内建的转换。例如,不可以重定义从doubleint的转换。
    2. 不能定义源类型或目标类型是object的转换
    3. 不能对源或目标类型同时进行implicitexplicit的转换
    4. 不能定义一个从基类到派生类的转换
    5. 不能定义源类型或目标类型是一个接口的转换
  • 使用方法:
    public static operator implicit target-type(source-type v) { return value; }

    public static operator explicit target-type(source-type v) { return value; }

 

 

  • 代码

    using System;
    namespace Convert
    {
          class ThreeD
          {
                int x, y, z;
                public ThreeD()
                {
                      x = y = z = 0;
                }
                public ThreeD(int a, int b, int c)
                {
                      this.x = a;
                      this.y = b;
                      this.z = c;
                }
                public static ThreeD operator +(ThreeD d1,ThreeD d2)
                {
                      ThreeD result = new ThreeD();
                      result.x = d1.x + d2.x;
                      result.y = d1.y + d2.y;
                      result.z = d1.z + d2.z;
                      return result;
                }
                public static implicit operator int(ThreeD op1)
                {
                      return op1.x * op1.y * op1.z;
                }
                public void show()
                {
                      Console.WriteLine(x +"," + y + ","+z);
                }
     }
     class Class1
     {
                static void Main(string[] args)
                {
                      ThreeD a = new ThreeD(1,2,3);
                      ThreeD b = new ThreeD(10,10,10);
                      ThreeD c = new ThreeD();
                      int i;
                      a.show();
                      b.show();
                      //将A和B相加
                      c = a + b;
                      c.show();
                      //转化为int
                      i = a;
                      Console.WriteLine("Result of i = a :" + i);
                      //转化为int
                      i = a * 2 -b;
                      Console.WriteLine("Result of i = a * 2 - b :" + i);    
                }
     }
    }

  •  
  • 命名空间定义了一个范围

    using 命名空间;
    namespace 命名空间 {
    //成员
    }

  • using

    using name;

    using alias = name;

  • 命名空间是可以添加的,就是说可以声明2个名字一样的命名空间。这样,一个命名空间可以分布在一个项目的多个文件中。
  • 命名空间是可以嵌套,就是A可以包含B,如果要用B里的类,必须要用A做限定。 
  • 在C#中,事件是什么,用什么关键字来创建。
    事件是程序中某个变化的通知。关键字event来创建事件。
  • 代理和事件的联系
    使用代理可以指定一个事件处理程序。
  • 事件可以多播吗?
    是的,事件可以多播。
  • 声明

    event event-delegate-name object-name;

 

  • 代码

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace EventDemo
    {   //为事件声明一个代理,注意返回是void
        delegate void EventHandle();
        //声明事件类
        class myEvent
        {
            //声明一个事件
            public event EventHandle activate;
            //调用fire()方法来触发activate这个事件
            public void fire()
            {
                if (activate != null)
                    activate();
            }       
        }
        class Program
        {
            //与代理返回结果和参数一致,可以被添加到事件链表中
            static void Handle()
            {
                Console.WriteLine("Event occured!");
            }
            static void Main(string[] args)
            {
                //创建事件实例对象
                myEvent evt = new myEvent();
                //把Handle()添加到事件链中
                evt.activate += new EventHandle(Handle);
                //触发事件
                evt.fire();
            }
        }
    }

  •  
  • 什么是代理?使用代理有什么好处?
    代理是引用方法的对象。
    只有在运行时,才能使用代理调用已知方法。
  • 申明代理:

    delegate 返回值 代理名称(参数列表);

  • 多播
    在一次代理调用方法链上的所有方法。
  • 代码:

    using System;
    namespace ConsoleApplication
    {
         delegate string del(string str);
         class A
         {
              public string instance(string str)
             {
                    return str + " is called by Instance.";
              }
           }
           class Class1
           {
                   static string method(string str)
                   {
                        return str + " is called by Method.";
                   }
                   static void Main(string[] args)
                   {     //方法代理,申明代理实例时候要加初始化方法名
                         del dMethod = new del(method);
                         Console.WriteLine(dMethod("woody"));
                         //实例代理,先创建实例,再申明代理时指明方法名(实例.方法名)
                         A b = new A();
                         del dInstance = new del(b.instance);  
                         Console.WriteLine(dInstance("Woody"));
                    }
            }
    }

using System;
namespace delegateMuti
{     //多重代理只能用于返回值为void的方法
      delegate void del();
      class Class1
      {
            static void Microsoft()
            {
                  Console.Write("Microsoft ");
            }
            static void Visual()
            {
                  Console.Write("Visual ");
            }
            static void C()
            {
                  Console.Write("C# ");
            }
            static void Net()
            {
                  Console.Write(".NET");
            }
            static void Main(string[] args)
            {
                  del del1 = new del(Microsoft);
                  del del2 = new del(Visual);
                  del del3 = new del(C);
                  del del4 = new del(Net);
                  del plus = del1;
                  plus += del2;
                  plus += del3;
                  plus += del4;
                  del sub = plus -del4 - del3 -del2;
                  del1();
                  del2();
                  del3();
                  del4();
                  Console.WriteLine("/n");
                  plus();
                  Console.WriteLine("/n");
                  sub();
                  Console.WriteLine("/n");
                  }
              }
}

DataReader对象
      使用DataReader对象检索Mircosoft Access的“地址薄”数据库的“家庭成员”数据表

using System;
//自己添加数据库操作引用
using System.Data.OleDb;
namespace UsingDataReader
{
 class Class1
 {
  static void Main(string[] args)
  {   
    string myConStr = "Provider = Microsoft.Jet.OLEDB.4.0;";
    myConStr    += "Data Source = addrbook.mdb;";
    OleDbConnection myCon = new OleDbConnection(myConStr);
    myCon.Open();
    string myComStr = "Select * from 家庭成员";
    OleDbCommand myCom = new OleDbCommand(myComStr,myCon); 
    OleDbDataReader myReader = myCom.ExecuteReader();   
    while(myReader.Read())
    {
     Console.WriteLine(myReader.GetInt32(0).ToString()+"/t"+myReader.GetString(2)+"/t"+myReader.GetString(3));
    }
    myReader.Close();
    myCon.Close();    
  }
 }
}

      同时检索Microsoft SQL Server 的Northwind数据库中的customers表和employees表

using System;
//自己添加的数据库操作引用
using System.Data.SqlClient;
namespace UsingDataReader2tables
{
 class Class1
 {
  static void Main(string[] args)
  {
   string Str = "Server = woodycmp; database = Northwind;";
    Str   += "user id = sa; password = sa;";
   SqlConnection Con = new SqlConnection(Str);
   string comStr = "select Address, city from customers where city = 'Paris';";
      comStr += "select lastname, firstname from employees where Hiredate < '1993-5-1'";
   SqlCommand Com = new SqlCommand(comStr, Con);
   Con.Open();
   SqlDataReader rd = Com.ExecuteReader();
   do
   {
    Console.WriteLine("/n");
    Console.WriteLine("/t{0}/t{1}",rd.GetName(0),rd.GetName(1));
   while(rd.Read())
   Console.WriteLine("/t{0}/t{1}",rd.GetString(0),rd.GetString(1));
   }while(rd.NextResult());
   rd.Close();
   Con.Close();
  }
 }
}

      关键字:ADO.NET对象,ADO.NET控件,数据绑定和数据绑定控件。
     
      使用ADO.NET开发数据库应用程序应遵循一下步骤:

  1. 选择.NET Framework数据提供程序;
    • SQL Server .NET Framework数据提供程序   System.Data.SqlClient    >= Sql Server 7.0

       应该算是第二个星期了,我上次和公司的经理在开发日志里说我要进入公司的软件开发部,现在已经是了,2个星期了,做了什么,我实在是有点担心,因为自己草率的学了下C#,缺的是实际的开发经验,还有所谓的的自己来写代码,公司做的多半是信息管理类的系统,说白了就是操作数据库,但是我连连接数据库也不会,确切的说,不是不会,是项目如果好几个人一起做的话,就要有一定的规范,不是说你总自己独立的写个类来连接数据库,有个公共的类,让大家去调用,我还没来得及去研究它是怎么样构造的,我要开始写代码了。
      先是静态的,能做的先做,比方说一个数据库表的字段编辑,给你的是几个现成的窗体,所谓的没有代码的,只有界面,我就把下拉的固定字段先填好,这样就是打字员,我还用可怜的智能ABC。据说,高手基本是不用5笔的,我就是讨厌用5笔,因为是自己老是有几个字打不出来,切换来切换去,还不如直接用智能ABC,况且我的语文基础是顶刮刮的好。
      一个字段一个字段的验证,就是重复的写if语句,判断是否为空吗?如果是数字,是不是数字?如果是年份,是不是是4位的数字?如果是覆盖度,那就要判断是0-100不?还有所谓的郁闭度,是不是0-1不?然后就是复制,粘贴,复制,粘贴,写代码原来就是这样。真是TMD幸福。
      我连基本的字符转数值也不会,不过现在会了。
      转的话,有什么所谓,隐式转(范围小转到范围大的),显式转(范围大的转到小的,可能溢出),还有强制转。
     

Convert.ToDouble(strnig value);


      里面有18个参数,基本能转就转了,而我用的基本是控件的Text属性。
      就是什么:
     

Convert.ToDouble(this.txt_nd.Text.Trim().ToString());


      反正值没变,外面的条件限制给它变了。
      还有就是数据库的连接,基本步骤是什么 建立连接,写执行命令,然后开通,执行,关闭连接。这个要好好研究了,我写的东西,还基本是人家写的,失败。
      别急嘛,写照猫画虎啊。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值