DateTime类

获得当前系统时间: DateTime dt = DateTime.Now;
Environment.TickCount可以得到“系统启动到现在”的毫秒值

DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy-MM-dd"));  //按yyyy-MM-dd格式输出s
Console.WriteLine(dt.ToString());    //  26/11/2009 AM 11:21:30
Console.WriteLine(dt.ToFileTime().ToString());   //   129036792908014024
Console.WriteLine(dt.ToFileTimeUtc().ToString());  //     129036792908014024
Console.WriteLine(dt.ToLocalTime().ToString());   //       26/11/2009 AM 11:21:30
Console.WriteLine(dt.ToLongDateString().ToString());   //      2009年11月26日
Console.WriteLine(dt.ToLongTimeString().ToString());  //      AM 11:21:30
Console.WriteLine(dt.ToOADate().ToString());   //      40143.4732731597
Console.WriteLine(dt.ToShortDateString().ToString());   //     26/11/2009
Console.WriteLine(dt.ToShortTimeString().ToString());   //     AM 11:21
Console.WriteLine(dt.ToUniversalTime().ToString());   //       26/11/2009 AM 3:21:30
Console.WriteLine(dt.Year.ToString());   //        2009
Console.WriteLine(dt.Date.ToString());   //        26/11/2009 AM 12:00:00
Console.WriteLine(dt.DayOfWeek.ToString());  //       Thursday
Console.WriteLine(dt.DayOfYear.ToString());   //       330
Console.WriteLine(dt.Hour.ToString());       //        11
Console.WriteLine(dt.Millisecond.ToString());   //     801        (毫秒)
Console.WriteLine(dt.Minute.ToString());   //      21
Console.WriteLine(dt.Month.ToString());   //       11
Console.WriteLine(dt.Second.ToString());   //      30
Console.WriteLine(dt.Ticks.ToString());   //       633948312908014024
Console.WriteLine(dt.TimeOfDay.ToString());   //       12:29:51.5181524
Console.WriteLine(dt.ToString());     //     26/11/2009 PM 12:29:51
Console.WriteLine(dt.AddYears(1).ToString());    //         26/11/2010 PM 12:29:51
Console.WriteLine(dt.AddDays(1.1).ToString());    //        27/11/2009 PM 2:53:51
Console.WriteLine(dt.AddHours(1.1).ToString());    //       26/11/2009 PM 1:35:51
Console.WriteLine(dt.AddMilliseconds(1.1).ToString());    //26/11/2009 PM 12:29:51
Console.WriteLine(dt.AddMonths(1).ToString());    //        26/12/2009 PM 12:29:51
Console.WriteLine(dt.AddSeconds(1.1).ToString());    //     26/11/2009 PM 12:29:52
Console.WriteLine(dt.AddMinutes(1.1).ToString());    //     26/11/2009 PM 12:30:57
Console.WriteLine(dt.AddTicks(1000).ToString());    //      26/11/2009 PM 12:29:51
Console.WriteLine(dt.CompareTo(dt).ToString());    //       0
Console.WriteLine(dt.Add(new TimeSpan(1,0,0,0)).ToString());    // 加上一个时间段

Continue reading

c#开发百度ping服务

c#开发百度ping服务,方法返回ping后API返回的信息

        ///

        /// 百度ping服务,另外ping google, yahoo等
        /// 

        ///
百度API(http://ping.baidu.com/ping/RPC2)
        ///
网站标题
        ///
网站URL
        ///
文章URL
        ///
RSS URL
        /// 缩略图的Image对象
        public static string SendPingXml(string api, string webtitle, string website, string articleurl, string rssurl)
        {
            string ApiXml = null;
            ApiXml += "< ?xml version=\"1.0\" encoding=\"UTF-8\"?>";
            ApiXml += "";
            ApiXml += "weblogUpdates.extendedPing";
            ApiXml += "
";
            ApiXml += "
";
            ApiXml += "" + webtitle + "";
            ApiXml += "";
            ApiXml += "
";
            ApiXml += "" + website + "";
            ApiXml += "";
            ApiXml += "
";
            ApiXml += "" + articleurl + "";
            ApiXml += "";
            ApiXml += "
";
            ApiXml += "" + rssurl + "";
            ApiXml += "";
            ApiXml += "";
            ApiXml += "
";
            ApiXml += "";

            MSXML2.XMLHTTP _xmlhttp = new MSXML2.XMLHTTPClass();
            _xmlhttp.open("post", api, false, null, null);
            _xmlhttp.setRequestHeader("Content-Type", "text/xml");
            _xmlhttp.send(ApiXml);
            return _xmlhttp.statusText;
        }

动网缓存技术

Call RsObject(FullConn, "ID, UserName", "[User]", "ID Desc", Null, Null)
Set Application("CacheUserList") = RecordsetToxml(MyRst, Null, Null)
Call Application("CacheUserList").setProperty("SelectionLanguage", "XPath")
XPath = "//xml/row[@id < 80 and position()<10]"
For Each Node In Application("CacheUserList").documentElement.selectNodes(XPath)
   Response.Write(node.selectSingleNode("@username").text & "")
Next

Function RecordsetToxml(Recordset,row,xmlroot)
	 Dim i,node,rs,j,DataArray
	 If xmlroot="" or IsNull(xmlroot) Then xmlroot="xml"
	 If row="" or IsNull(row)  Then row="row"
	 Set RecordsetToxml=CreateObject("msxml2.FreeThreadedDOMDocument.3.0")
	 RecordsetToxml.appendChild(RecordsetToxml.createElement(xmlroot))
	 If Not Recordset.EOF Then
		 DataArray=Recordset.GetRows(-1)
			 For i=0 To UBound(DataArray,2)
			 Set Node=RecordsetToxml.createNode(1,row,"")
			 j=0
			 For Each rs in Recordset.Fields
					  node.attributes.setNamedItem(RecordsetToxml.createNode(2,LCase(rs.name),"")).text= DataArray(j,i)& ""
					  j=j+1
			 Next
			 RecordsetToxml.documentElement.appendChild(Node)
		 Next
	 End If
	 DataArray=Null
	 Call CloseOjbect(Recordset)
End Function

SqlCommand

1:

ExecuteReader执行返回行的查询

,SqlCommand 对象的 ExecuteReader 方法返回一个 SqlDataReader 对象。详见SqlDataReader使用方法

2:

ExecuteScalar获取单一值

,SqlCommand 对象的 ExecuteScalar 方法返回一个 Object 数据类型中第一行第一列的值。

SqlCommand cmd = new SqlCommand();
//存储过程应用
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ListTable";
cmd.Parameters.AddWithValue("@fileName", "top 1 ID");
cmd.Parameters.AddWithValue("@tableName", "Class");
cmd.Parameters.AddWithValue("@Sort", null);
cmd.Parameters.AddWithValue("@whereStr", "ID < 4");
cmd.Parameters.AddWithValue("@groupStr", null);
//可以直接使用 object Obj = cmd.ExecuteScalar(); 然后判断 Obj == null 并进行下步操作
int ClassID = (int)cmd.ExecuteScalar();
Console.WriteLine(ClassID);

3:ExecuteNonQuery执行不返回结果集的查询,SqlCommand 对象的 ExecuteNonQuery 方法

string UPDATE_SP = "update class set clsname = @ClassName where id = @ClassID";
SqlCommand cmd = new SqlCommand(UPDATE_SP, conn);
SqlParameter[] p = new SqlParameter[2]{
    new SqlParameter("@ClassName", DbType.String),
    new SqlParameter("@ClassID", DbType.Int32)
};
p[0].Value = "Ado.Net";
p[1].Value = 7;

foreach (SqlParameter parm in p)
    cmd.Parameters.Add(p);

int ExecuteNum = cmd.ExecuteNonQuery();
Console.WriteLine(ExecuteNum);

Continue reading

SqlParameter

SqlParameter 对象使用方法,可有效防止恶意参数。
1:下面描述SqlParameter对象的几种实例过程。

/// SqlParameter()
SqlParameter parm = new SqlParameter();
parm.ParameterName = PARM_CARD_TYPENAME;
parm.SqlDbType = SqlDbType.VarChar;
parm.Precision = 20;
parm.Value = myCard.CardTypeName;

/// SqlParameter(重载+3), SqlDbType 属于Sql数据类型指定时应该设置其长度
SqlParameter parm = new SqlParameter(PARM_CARD_TYPENAME, SqlDbType.VarChar, 20);
parm.Value = myCard.CardTypeName;

/// SqlParameter(重载+2)
SqlParameter parm = new SqlParameter(PARM_CARD_TYPENAME, DbType.String);
parm.Value = myCard.CardTypeName;

2:多参数应用示例,示例中用到了SqlCommand对象,点击查看SqlCommand对象使用方法

/// SqlParameter[]{} 多参数应用
SqlCommand cmd = new SqlCommand(UPDATE_SP, conn);
SqlParameter[] p = new SqlParameter[2]{
    new SqlParameter("@ClassName", DbType.String),
    new SqlParameter("@ClassID", DbType.Int32)
};
p[0].Value = "Ado.Net";
p[1].Value = 7;
//递归,把parm对象传入 cmd
foreach (SqlParameter parm in p)
    cmd.Parameters.Add(p);

SqlDataReader

SqlDataReader使用方法

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // 判断数据是否读到尾.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // 一定要关闭 reader 对象.
        reader.Close();
    }

SqlDataReader类成员

用基于序号的查阅更快速获取数据

rdr[index] 的获取速度大于 rdr["id"], 但是如果库改变,查询语句字段改变时序号查询并非常不灵活。
SqlDataReader对象GetOrdinal()方法可以查看序列号的值

        SqlCommand cmd = new SqlCommand();
        //存储过程应用
        cmd.Connection = conn;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "ListTable";
        cmd.Parameters.AddWithValue("@fileName", "ClsName, Sort");
        cmd.Parameters.AddWithValue("@tableName", "Class");
        cmd.Parameters.AddWithValue("@Sort", null);
        cmd.Parameters.AddWithValue("@whereStr", "ID < 10");
        cmd.Parameters.AddWithValue("@groupStr", null);
        SqlDataReader rdr = cmd.ExecuteReader();
        int intClsName = rdr.GetOrdinal("ClsName");
        int intSort = rdr.GetOrdinal("Sort");

        while (rdr.Read())
        {
            Console.WriteLine("ClsName : {0}, Sort:{1}", rdr[intClsName], rdr[intSort]);
            //可以调用SqlDataReader 的 Get 方法来避免由于装箱,拆箱而导致的性能损失
            Console.WriteLine("ClsName : {0}, Sort:{1}", rdr.GetString(intClsName), rdr.GetInt32(intSort));
            //调用SqlDataReader 的 Get 方法在碰到 NULL 值时将会产生一个 SqlNullValueException.可以使用IsDBNull方法判断
            articleClass arc = new articleClass();
            arc.clsname = rdr[0];
            if (rdr.IsDBNull(rdr[1]))
                arc.sort = null;
            else
                arc.sort = rdr[1];
            arc.clsname = rdr[1];
            arc.Add(arc);
        }
        rdr.Close();

使用 MARS

ADO.NET 不支持 SqlDataReader 对象嵌套查询。而在SQL 2K5时代支持了 MARS, 使用MARS可实现 SqlDataReader 对象嵌套查询.
在数据库连接字符串中加入参数:MultipleActiveResultSets = True;

SqlConnectionStringBuilder


using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());
        Console.WriteLine(builder.ConnectionString);
        Console.WriteLine(builder.Password);

        // 设置builder属性生成安全字符串连接,
        builder["Server"] = ".";
        builder["Connect Timeout"] = 1000;
        builder["Trusted_Connection"] = true;
        Console.WriteLine(builder.ConnectionString);

        Console.WriteLine("Press Enter to finish.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}