瑞星卡卡安全论坛
清风阁☆四少 - 2005-6-30 14:13:00
本人是计算机系软件专业大二学生,通过自己的不断努力学习,我的第一个整套动态网站+后台已经快完成了,为了让更多的朋友了解C#语言,我将定期为大家介绍自己所学的经验.
第一讲;什么是C#
在谈及C#之前必须说一下VS.NET,也就是Visual Studio .NET,微软的技术开发平台.而C#作为JAVA的替代语言就集成在这个平台里.
和C,C++相比,C#的特点有:
语法更简单,
保留了C++的强大功能,
快速应用开发功能,
语言的自由性,
强大的WEB服务器控件,
支持跨平台,
与XML相融合
有人又会问XML是什么东西?
XML是Extensible Markup Language的简写,一种扩展性标识语言。
这是标准的定义。那么什么是标志语言,为什么叫扩展性?已经让人有些糊涂。我想我们这样来理解会好一些:
对HTML你已经非常熟悉了吧,它就是一种标记语言,记得它的全称吗:"Hypertext Markup Language" 超文本标记语言。明白了?同时,HTML里面有很多标签,类似,等,都是在HTML4.0里规范和定义,而XML里允许你自己创建这样的标签,所以叫做可扩展性。
这里有几个容易混淆的概念要提醒大家:
1.XML并不是标记语言。它只是用来创造标记语言(比如HTML)的元语言。天,又糊涂了!不要紧,你只要知道这一点:XML和HTML是不一样的,它的用处途比HTML广泛得多,我们将在后面仔细介绍。
2.XML并不是HTML的替代产品。XML不是HTML的升级,它只是HTML的补充,为HTML扩展更多功能。我们仍将在较长的一段时间里继续使用HTML。(但值得注意的是HTML的升级版本XHTML的确正在向适应XML靠拢。)
3.不能用XML来直接写网页。即便是包含了XML数据,依然要转换成HTML格式才能在浏览器上显示。
**************************
详情请参阅相关书籍(推荐清华大学出版社和电子工业出版社的相关书籍)
以下关于C#的演示都是在VS.NET里进行的(你必须了解VS.NET的一些基本功能,因为它的类,属性,方法比较多,估计我打一天也打不完,自己多练习,VS.NET里有注释,遇到问题就查MSDN,也就是帮助文档)
语法就不用讲了,和C,C++的语法大体相同
写个简单的小程序:(控制台应用程序)
using System; //引入命名空间
class Example //Example是类名
{
public static void Main() //C#里要注意区分大小写
{
string a; //定义一个字符串变量a
a=Console.ReadLine();
//用Console的ReadLine方法读取你输入的内容
//加一句:ReadLine表示换行,Read是不换行
Console.WriteLine("a={0}",a);
//输出输入的内容
}
}
清风阁☆四少 - 2005-7-3 17:10:00
我做个教程导航,方便大家查找我的教程帖子
此帖子作为目录帖子************2007年11月28日*********************
更新在第27楼,快速链接地址:
http://forum.ikaka.com/topic.asp?board=55&artid=6670525&page=2
清风阁☆四少 - 2005-7-10 9:35:00
不知道,C#语法有没有必要讲,和C,C++差不多,讲点有精华的
第二讲:C#面向程序对象设计
面向对象的思想:个人理解就是--具体问题具体分析.
怎么个具体问题具体分析呢~?
这就要谈到面向对象设计方法所提出的一系列全新概念,主要有:类,对象,属性,方法,封装,继承,重载,多态等.
以下会一一介绍:
(1)类和对象
通常把具有相同属性和功能的东西素构成的集合叫做类,就是上面的那个例题,就是一个类.在指定一个类后,往往把属于这个类的对象称为类的实例.精华----在C#中,类和对象的关系就类似与整数类型和整型变量的关系.类和整数类型 int 代表的是一般的概念,对象和整型变量代表的是具体的实例.
(2)属性,方法与事件
属性是对象的状态和特点.比如学生有学号,姓名等特征.
方法就是对象能够执行的一些操作,他体现了对象的功能,比如学生踢球.
事件是对象能够识别和响应的某些操作.比如我点击一个按钮他就会弹出一个对话框.
清风阁☆四少 - 2005-7-10 17:10:00
继续...
(3)封装
所谓封装就是将用来描述客观事物的一组数据和操作组装在一起,形成一个类.
类实际上也是一种自定义的数据类型.
被封装的数据和操作必须通过所提供的公开接口才能被外界所访问,具有私有访问权限的数据和操作是无法从外界直接访问的,只有通过封装体内的方法(或函数)才可以被访问,这就是隐藏性.隐藏性增加了数据的安全性.
紫衣女 - 2005-7-11 0:34:00
我想学,可基础没有看不懂,我还是要继续看下去的,谢谢
清风阁☆四少 - 2005-7-12 14:41:00
中间插一句,有很多朋友在用.NET的时候会遇到这样的问题
无法找到脚步库"/aspnet_
client/system_web/1_1_4322/webuivalidation.js
这个问题对新手是个不小的打击,让人新手摸不到头脑,因为按提示做了还是无法解决,而真正的解决方法是以下概述:
The Validation controls make use of a JavaScript script library that is automatically installed on your server when you install the .NET framework. This library is located in a file named WebUIValidation.js.
Validation控件要用到在你装.NET framework时已经自动安装到你的服务器端了JavaScript的脚本运行库.这个运行库文件在本地文件夹中被命名为WebUIValidation.js
By default, WebUIValidation.js is installed in a directory named aspnet_client located beneath your Web server"s wwwroot directory. If you change the location of your root directory, you need to copy the aspnet_client directory to the new directory; otherwise, the validation script will not work. If WebUIValidation.js can"t be found, you receive the error Warning! Unable to find script library "WebUIValidation.js"
默认情况下,WebUIValidation.js安装的路径是本地Web服务根目录wwwroot中的aspnet_client文件夹中.如果你改变了本地的根目录路径,你就需要把aspnet_client有WebUIValidation.js文件的文件夹拷贝到新的目录;不然,validation脚本就不能工作.如果WebUIValidation.js不能被找到,你就会收到错误警告!提示不能找到WebUIValidation.js文件
我的英语水平有限,希望高手指正
清风阁☆四少 - 2005-7-12 14:58:00
(4)继承
这个应该好理解,不过我不想用书上话来讲,因为说完了到不理解了,
继承就是儿子长的像父亲,儿子就是我们在C#中讲的派生类,而父亲就是基类,但意思又不大相同,因为在C#中派生类是继承基类的所有属性和操作,并且增加了自己的新属性和新操作
来个例子:
基类
class people
{
private string Name;
}
派生类
class man:people
{
private string Sex;
}
感觉例子不是很恰当,但是可以说明问题
清风阁☆四少 - 2005-7-12 15:12:00
(5)重载
重载指的是方法名一样,而调用的参数不同
还是要举个例子:
private void Wind(int a,int b)
{
int c;
c=a+b;
........这里输出
}
private void Wind(string a,string b)
{
string c;
c="";
c+=a;
c+=b;
...........输出语句
}
看见方法的参数类型不同了吧,系统会根据你调用参数类型自动选择方法
如:
public void Main()
{
int m;
int n;
m=5;
n=8;
Wind(m,n);//这是他调用的是第一个方法
}
清风阁☆四少 - 2005-7-12 15:14:00
也就是说方法名可以相同但是参数类型不能相同,不然就会出错
冰之堂堂 - 2005-7-13 21:44:00
我想学 你教我啊 加我qq 114621353
极度危险 - 2005-7-14 21:30:00
支持你!
继续讲解.我会学习....
清风阁☆四少 - 2005-7-15 16:02:00
(6)多态
面向对象设计的重要概念!!!
1,在运行时,可以通过指向基类的引用,来调用实现派生类的方法
2,同一操作作用与不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性.
3,多态性通过派生类覆写基类中的虚函数型方法来实现.
利用override进行覆盖覆写
多态是非常非常重要的
清风阁☆四少 - 2005-7-15 16:05:00
多态有两种,编译时和运行时.
前者是通过重载来实现的,运行时是通过覆写虚成员来实现的
清风阁☆四少 - 2005-7-15 16:14:00
说到这,大家可能会迷惑,什么重载,什么覆写,什么虚函数?
重载前面讲了
总结一下:
方法名:必须相同
参数列表:必须不相同
返回值类型:可以不相同
,后面来讲覆写和虚函数.
虚函数:
声明虚方法:
使用 virtual关键字
虚方法可以有实现体
public virtual bool Wind(...)
覆写:
关键字:override
只有虚方法和抽象方法才能被覆写
要求:
相同的方法名称
相同的参数列表
相同的返回值类型
public override bool Wind(...)
续>>
wzjan - 2005-7-20 3:35:00
非常有意义
我现在正在学
希望多讲一点
极度危险 - 2005-7-21 22:38:00
【回复“wzjan”的帖子】
我又来学习了!!
清风阁☆四少 - 2005-7-31 9:46:00
最近比较忙在研究VS 2005
下面继续啊~有问题就问~
清风阁☆四少 - 2005-7-31 9:56:00
只有虚方法和抽象方法才可以被覆写!这句话很重要
下面附图:
附件:
436121200573195641.jpg
清风阁☆四少 - 2005-7-31 9:58:00
清风阁☆四少 - 2005-7-31 10:00:00
清风阁☆四少 - 2005-7-31 10:02:00
清风阁☆四少 - 2005-7-31 10:03:00
清风阁☆四少 - 2005-7-31 10:05:00
showdontboll - 2005-8-1 22:39:00
你好,我是asp.net的初学者.想提问一个简单问题.程序是C#写法的.
先接收传来的变量.
String tname=Request["myname"];
String tmail=Request["mymail"];
我希望把这两个变量的内容插入到数据库,重点是我不太清楚怎样在SQL语句中表示字符串形式的变量.
我知道一种方法是 '"+tname+"' ,具体语句如下:
OleDbCommand comm=new OleDbCommand("insert into mydb(name,mail) values('"+tname+"','"+tmail+"')",conn);
运行的结果还是添加不成功,经过调试我已经确定是变量表示的方法不正确了,请楼主指点一下.
清风阁☆四少 - 2005-8-1 23:11:00
| 引用: |
【showdontboll的贴子】你好,我是asp.net的初学者.想提问一个简单问题.程序是C#写法的. 先接收传来的变量. String tname=Request["myname"]; String tmail=Request["mymail"]; 我希望把这两个变量的内容插入到数据库,重点是我不太清楚怎样在SQL语句中表示字符串形式的变量. 我知道一种方法是 ''"+tname+"'' ,具体语句如下: OleDbCommand comm=new OleDbCommand("insert into mydb(name,mail) values(''"+tname+"'',''"+tmail+"'')",conn); 运行的结果还是添加不成功,经过调试我已经确定是变量表示的方法不正确了,请楼主指点一下. ........................... |
Request.QueryString["myname"];
Request.QueryString["mymail"];
用此方法请重新试下,通过Request的QueryString方法来获取变量字符串.
showdontboll - 2005-8-2 7:49:00
谢谢楼主的提示,其实我使用的传递方法是POST,所以我使用
Request.Form[key];
就成功了,但是Request[key] 不是能代替其他两种的写法的吗?
清风阁☆四少 - 2005-8-2 8:57:00
Request[key]可以代替其他两种的写法
你再好好看看
******************************************************
从今起,我要备考软件设计师认证,可能很长时间不上网,直到11月份考试结束,不好意思,课程我会在以后继续讲解.
清风阁☆四少 - 2005-10-21 22:33:00
看最新教程请关注
http://211.68.247.95:81/03soft/index.aspx
http://cs.tjac.edu.cn/bbs/index.asp
与我联系
******************
此贴就作为我以后续写教程的帖子了
更新的东西,以后请关注这里,省的大家再去查找了
*******************2007年11月28日******************
现在大家用的都是VIsual Studio 2005和Sql Server 2005吧,
下面的教程就都在这个平台上操作吧,Visual Studio 2008目前还是测试版,等
出了正式版,我们也跟着转移到08平台上去。
对了,有朋友问关于多线程的问题,我回来找找我大三时做过的程序,把源代码
开源出来,然后做分析讲解。
有的朋友问我说入门的书哪本比较好,我认为还是那本“ASP.NET数据库开发入门
与提高”,清华大学出版社的,虽然市面上有卖ASP.NET 2.0入门的书,但是我看
过,不适合初学者看,特别是没有基础的,再有那些所谓的ASP.NET 2.0书上的内
容都是微软官方教程的翻板,没什么技术含量,只能算是一本对ASP.NET 2.0相关
内容介绍的书籍。并不能真正让您学会如何开发,更别提入门了。
虽然“ASP.NET数据库开发入门与提高”上的内容看似比较老,用的都是VS 2003
和SQL 2000,但是它可以真正让你从零开始学起,是一本不折不扣的入门书籍。
风云一号 - 2005-10-24 22:54:00
| 引用: |
【showdontboll的贴子】你好,我是asp.net的初学者.想提问一个简单问题.程序是C#写法的. 先接收传来的变量. String tname=Request["myname"]; String tmail=Request["mymail"]; 我希望把这两个变量的内容插入到数据库,重点是我不太清楚怎样在SQL语句中表示字符串形式的变量. 我知道一种方法是 ''"+tname+"'' ,具体语句如下: OleDbCommand comm=new OleDbCommand("insert into mydb(name,mail) values(''"+tname+"'',''"+tmail+"'')",conn); 运行的结果还是添加不成功,经过调试我已经确定是变量表示的方法不正确了,请楼主指点一下. ........................... |
你的语句不对! 明显爱了asp的毒害! 呵呵
string strSql=string.Format("insert into mydb(name,mail) values('{0}','{1}'",tname,tmail);
OleDbCommand comm=new OleDbCommand(strSql,conn);
清风阁☆四少 - 2005-11-26 0:08:00
| 引用: |
【风云一号的贴子】| 引用: | 【showdontboll的贴子】你好,我是asp.net的初学者.想提问一个简单问题.程序是C#写法的. 先接收传来的变量. String tname=Request["myname"]; String tmail=Request["mymail"]; 我希望把这两个变量的内容插入到数据库,重点是我不太清楚怎样在SQL语句中表示字符串形式的变量. 我知道一种方法是 ''''"+tname+"'''' ,具体语句如下: OleDbCommand comm=new OleDbCommand("insert into mydb(name,mail) values(''''"+tname+"'''',''''"+tmail+"'''')",conn); 运行的结果还是添加不成功,经过调试我已经确定是变量表示的方法不正确了,请楼主指点一下. ........................... |
你的语句不对! 明显爱了asp的毒害! 呵呵
string strSql=string.Format("insert into mydb(name,mail) values(''{0}'',''{1}''",tname,tmail); OleDbCommand comm=new OleDbCommand(strSql,conn); ........................... |
最近太忙了,来一次不容易
不过我们写数据连接都是:
string conStr="Provider=Microsoft.Jet.OLEDB.4.0;";
conStr+=@"Data Source=";
conStr+=Server.MapPath("..\\db\\softdb.asp")+";";
OleDbConnection conn=new OleDbConnection(conStr);
string Str="INSERT INTO Announce(Title, Content, DateAndTime, AddUser) VALUES (@TiTle,@Content,@DateAndTime,@AddUser)";
OleDbCommand com=new OleDbCommand(Str,conn);
@Title这是引用,这样可以避免“or”测试攻击漏洞
详情见微软中文网相关技术文章,我不是做广告,呵呵
© 2000 - 2025 Rising Corp. Ltd.