SQL语句是这样select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理
from tb
group by name
SELECT COUNT(*) FruitName AS 水果种类, ProductPlace AS 出产国 FROM
T_TEST_FRUITINFO GROUP BY ProductPlace
select Member.MName as 姓名,
语文 = max(case F.FName when '语文' then score.Score end ),
英语 = max(case F.FName when '英语' then score.Score end ),
历史 = max(case F.FName when '历史' then score.Score end ),
数学 = max(case F.FName when '数学' then score.Score end )
from Member,F,score
where Member.MID = score.MID
and score.FID = F.FID
group by Member.MName
一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。
832040
public static void Main()
{
Console.WriteLine(Foo(30));
}
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if(i > 0 && i <= 2)
return 1;
else return Foo(i -1) + Foo(i - 2);
}
int [] array = new int;
int temp = 0 ;
for (int i = 0 ; i < array.Length - 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
datareader与dataset的区别
答:DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。
DataReader提供一个来自数据库的快速、仅向前、只读数据流。
列举ASP.NET 页面之间传递值的几种方式。
答. 1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
}
1.mysql存储过程与普通的sql语句有什么区别
快:存储过程的执行是在服务器上,只需要传递几个简单的参数就可以,减少了网络通讯。所以比起一般程序中写的查询语句来说更快一些
安全:
存储过程能够实现较快的执行速度
存储过程能够减少网络流量
存储过程可被作为一种安全机制来充分利用
存储过程和sql语句的优缺点
优点:
1.提高性能,减少网络传输,节约时间 。
2.减少网络流量 存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql 语句。
4.安全性 减少sql 注入式攻击。
5.可维护性高 更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
2.ADO.NET的数据访问对象是以下几个:
Connection 打开数据库连接
Command 执行数据库命令
DataAdapter 连接数据,执行数据库命令,填充DataSet
DataSet 数据在内存中的缓存,数据结构
DataReader 只读向前的读取数据库
DataView对象:用于显示DataSet中的数据
1、Connection对象:与数据源建立连接,连接sql server7.0 或更新版本数据库用SqlConnection,连接OLEDB数据源使用OledbConnection.
2、Command 对象:对数据源执行SQL命令并返回结果,SQL Server7.0或更新版本用SqlCommand,OLE DB数据源使用OledbCommand.
3、DataReader对象: 读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader 因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..
4、DataAdapter对象:对数据源执行操作并返回结果,在DataSet与数据源之间建立通信,将数据源中的数据写入DataSet ,或根据DataSet中的数据必定数据源。Sql server7.0或以上版本使用SqlDataAdapter,Oledb 数据源使用OledbAdpater.
5、DataSet对象:服务器内存中的数据库 DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接
6、DataView对象:用于显示DataSet中的数据
3.string myconn="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind";
//需要执行的SQL语句
string mysql="select OrderID,CustomerID from Orders where CustomerID='CHOPS'";
//打开数据库连接。
SqlConnection myconnection=new SqlConnection(myconn);
myconnection.Open();
//创建SqlCommand 对象
SqlCommand mycommand=new(mysql,myconnection);
//通过SqlCommand的ExecuteReader()方法构造DataReader 对象。
SqlDataReader myreader=mycommand.ExecuteReader();
while(myreader.read()){
Console.WriteLine(myreader.GetInt32(0)+","+myreader.GetString(1));
}
myreader.Close();
myconnection.Close();
}
}
}
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用
1.使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer
ViewState只维护当前页面的状态,不同页面之间不能共享,Session可以。
委托与事件的用法
答:public delegate void handels();//返回值是void,没有参数
public event handels eventHandels;
his.eventHandels = new handels(fun);
public void fun()
{ }
string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。
1)get是从服务器上获取数据,post是向服务器传送数据。
(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
(3)安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。
Eval 单向绑定:数据是只读的
Bind 双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库.
<asp:TextBox ID="First" RunAt="Server" Text='<%# Bind("FirstName") %>' />
例如:<td><%# Eval("ProductID") %></td>
.两个表,写查询语句,根据两个字段一个是升序,一个将序。
答:select * from a,b where a.字段1 = b.字段1 order by a.字段2 asc,b.字段2 desc
select top 10 * from A where id not in (select top 30 id from A)
委托delegate 可序列化 [serializable] 反射 Reflection
Attributes.Add("javascript事件","javascript语句");
this.TextBox1.Attributes.Add("onblur","this.style.display='none'");
重载:就是在一个类中,方法一样,只是需要传入有参数类型不一样。
重写:就是继承某一个接口或类后,把接口或类中的方法重定,就是重新写,可以改变父类中的同一个方法中的内容。一个抽象方法,接口,标记为virtual的方法,你在派生类中去实现,或者改写他的功能,叫重写
重写: public class C1 { public virtual string GetName() { return "Name"; } } public class C2:C1 { public override string GetName() { return "Value"; } } C1 c1 = new C2(); label1.Text = c1.GetName(); //子类已经重写了父类,输出为子类的值Value 如果没有virtual 和override 修饰结果为:Name 因为子类仅覆盖了父类,父类的GetName方法仍在,这样调用的是父类的GetName方法,这是重写和覆盖的区别。
抽象类和接口?
接口,只能包含功能的定义。抽象类,可以包含功能的定义,但是不能包含实现。
接口支持多继承;抽象类不能实现多继承。
接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
字符串反向输出
string str = "abcdef";char[] charArray = str.ToCharArray();Array.Reverse(charArray);Response.Write(new string(charArray));
string[] b = {"a","b","c","d","e","f"};
Array.Reverse(b); foreach (string a in b) { Console.WriteLine(a); }