非聚集
create index 索引名 on 表名(字段名) --也可以是字段名列表(复合索引)
聚集
create clustered index 索引名 on 表名(字段名)
唯一
create unique index 索引名 on 表名(字段名) --也可以是字段名列表(复合索引)
create index 索引名 on 表名(字段名) --也可以是字段名列表(复合索引)
create clustered index 索引名 on 表名(字段名)
create unique index 索引名 on 表名(字段名) --也可以是字段名列表(复合索引)
获得当前系统时间: 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()); // 加上一个时间段
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
1:
,SqlCommand 对象的 ExecuteReader 方法返回一个 SqlDataReader 对象。详见SqlDataReader使用方法
2:
,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);
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);
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();
}
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();
ADO.NET 不支持 SqlDataReader 对象嵌套查询。而在SQL 2K5时代支持了 MARS, 使用MARS可实现 SqlDataReader 对象嵌套查询.
在数据库连接字符串中加入参数:MultipleActiveResultSets = True;
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";
}
}