在CLR(公共语言运行库)下执行的代码,叫做托管代码,反之则叫非托管代码.
那我怎么知道这个代码是否在公共语言运行库中呢?
[DllImport("User32.dll")] 是非托管代码,也就是不在CLR下运行的.书上说 [DllImport("User32.dll")]是非托管,可是我不会辨别这段代码是否是托管?还有一个问题:
sqlcommand2.CommandText = "select sno,sname,sage FROM student WHERE(sdept =@sdept)";
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char);
sqlcommand2.Parameters[0].Value = comboBox1.Text;
sdept=@sdept @是占位符,我知道它的名字叫占位符,可是具体怎么用,什么意思我不明白,
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char); Parameters 是一个参数集合,把commandtext执行后的结果添加进这个集合中,并且是Char类型,这样解释总感觉有问题,
那我怎么知道这个代码是否在公共语言运行库中呢?
[DllImport("User32.dll")] 是非托管代码,也就是不在CLR下运行的.书上说 [DllImport("User32.dll")]是非托管,可是我不会辨别这段代码是否是托管?还有一个问题:
sqlcommand2.CommandText = "select sno,sname,sage FROM student WHERE(sdept =@sdept)";
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char);
sqlcommand2.Parameters[0].Value = comboBox1.Text;
sdept=@sdept @是占位符,我知道它的名字叫占位符,可是具体怎么用,什么意思我不明白,
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char); Parameters 是一个参数集合,把commandtext执行后的结果添加进这个集合中,并且是Char类型,这样解释总感觉有问题,
参数集合没错,但不是在commandtext执行后,
相反,在执行前,提供参数,供commandtext运行
这句
sqlcommand2.CommandText = "select sno,sname,sage FROM student WHERE(sdept =@sdept)";
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char);
sqlcommand2.Parameters[0].Value = comboBox1.Text;
等效于
sqlcommand2.CommandText = "select sno,sname,sage FROM student WHERE(sdept ='+ comboBox1.Text+')";
托管dll中的方法直接using xxx就可以引用了
参数集合没错,但不是在commandtext执行后,
相反,在执行前,提供参数,供commandtext运行sqlcommand2.Parameters.Add("sdept",SqlDbType.Char);
在什么时候执行commandtext?在哪个代码后?
等效于
sqlcommand2.CommandText = "select sno,sname,sage FROM student WHERE(sdept ='+ comboBox1.Text+')";
那Parmeters不是没有用了? Parmeters的作用是干什么的呢?还有@占位符我还是不明白,呵呵,麻烦你了
dllimport的就是非托管using的全都是托管?对吗?
sqlcommand2.Parameters.Add("sdept",SqlDbType.Char);
sqlcommand2.Parameters[0].Value = comboBox1.Text;
sqlcommand2.ExecuteQuery(commandtext);//在这句执行commandtext用Parameters大概有这么几个好处:
sql的参数直观清晰,便于维护,可读性强,改动方便
减少sql注入的发生可能
sql的参数直观清晰,便于维护,可读性强,改动方便
减少sql注入的发生可能还是 Sql 安全性的问题啊 恩 好的
而.Net中写的代码为托管代码,托管代码编译后不能直接运行,需要CLR的参与,具体参与法请看书。
dllimport的就是非托管using的全都是托管?这样说对吗?kernel32函数的各种方法,我怎么才能查到呢?
有人说通过wdasm工具获得的kernel32.dll的函数,可好象都是英文的,我还是不知道什么时候用啊?
Assembly.Load 成功就算托管的
using也是.NET的一个关键字,这个关键字说明当前文件将引用using后面的命名空间,这样在使用这个命名空间里面的类就不需要全名了。是否为托管代码主要看PE文件里面的头部信息(CLI header)。