Windows Phone实现对SQL Server 2008的增删改查
来源:互联网 发布:edu域名如何注册 编辑:程序博客网 时间:2024/06/07 22:04
*引言
笔者近段时间做关于WP开发方面的毕业设计,内容涉及到WP和数据库操作的问题。考虑到WP内置的数据库是基于隔离存储的,所以本身的性能鸡肋不说,而且效率低下。有没有一种方法能够实现WP与我们常用的强大的主流数据库交互呢?答案是肯定的。做过有关WCF开发的朋友应该清楚,WCF是可以实现跨机器、跨语言、跨平台、跨终端通信的通信架构。基于这一点,我们就可以利用它作为数据传递的中介,WP客户端可以把数据传到WCF,再由WCF实现对具体业务逻辑的操作,包括对数据库的操作。当然也可以根据需要,读取数据库内的数据传回到WP客户端。这样我就可以使WP客户端间接地对数据库进行访问了。
好吧,废话少说,切入正题。
1数据库设计
1.1建立一个数据库,命名为userinfo
数据库采用SQL Server,本人用的是SQL2008,SQL 2005理论上也可以。
use master
go
create database userinfo
on
(
name='userinfo_data',
filename='D:\database\userinfo.mdf',
size=10mb,
maxsize=50MB,
filegrowth=10%
)
log on
(
name='userinfo_log',
filename='D:\database\userinfo.ldf',
size=5mb,
maxsize=20MB,
filegrowth=10%
)
1.2往数据库建一个名为users的表,并向其中插入数据
create table users
(
UserID varchar(20) not null primary key,
UserName varchar(20) null,
Phone varchar(20) null,
QQ varchar(20) null,
Condition varchar(20) null
)
insert into users values('P000000001','陈才学','13977547364','265489211','良好')
insert into users values('P000000002','江依妍','13587543647','755229211','良好')
insert into users values('P000000003','王康','13375573644','4654871','良好')
insert into users values('P000000004','楚天','13927547364','66544211','发烧')
insert into users values('P000000006','王大干','13752636436','76629211','良好')
insert into users values('P000000007','李玉梅','13696773678','365489261','良好')
insert into users values('P000000008','唐一菲','13977585248','76546611','良好')
insert into users values('P000000009','马瑟','13977555525','865489211','感冒')
insert into users values('P000000010','郑树森','13977563584','35489211','良好')
insert into users values('P000000011','叶文乐','13977578232','968489211','良好')
insert into users values('P000000012','王天羽','13977541285','658589211','良好')
2配置环境系统
选择win7,VS2010 SP1开发环境,安装Windows Phone 7 SDK。装完这些后,打开VS 2010,新建一个WCF服务应用程序项目(文件---新建---项目---WCF服务应用程序),命名为DatabaseService,解决方案命名为Tester,右键单击解决方案“Tester”---添加---新建项目,windows phone应用程序,命名为WPClient,确定后,具体文件表如下图所示:
2.1 IService1.cs文件配置,声明接口
双击IService1.cs,添加如下代码
[ServiceContract] public interface IService1 { //声明增加数据接口 [OperationContract] string Insertdata(string UserID, string UserName, string Phone, string QQ, string Condition); //声明删除数据接口 [OperationContract] string Deletedata(string UserID); //声明更改数据接口 [OperationContract] string Updatedata(string UserID, string UserName, string Phone, string QQ, string Condition); //声明查询数据接口 [OperationContract] string Selectdata(string UserID); }
2.2 Service1.svc.cs文件配置,编写上述IService接口的子类Service1的实现方法
双击Service1.svc.cs,引用System.Data、System.Data.SqlClient 程序集,并添加如下代码:
public class Service1 : IService1 { string resoult; SqlConnection strCon = new SqlConnection(@"server=WIN-20130306POM\SQL2008;uid=sa;pwd=1990cfm;database=userinfo"); //创建数据库链接,其中“WIN-20130306POM\SQL2008”表示你的数据库服务器,uid表示数据库账号,pwd表示数据库密码,database表示你要连接的数据库名称 //增加数据接口实现代码 public string Insertdata(string UserID, string UserName, string Phone, string QQ, string Condition) { try { strCon.Open(); string _strSql = "select * from users where UserID=@UserID"; SqlCommand cmd1 = new SqlCommand(_strSql, strCon); SqlParameter parm = new SqlParameter("@UserID", UserID); cmd1.Parameters.Add(parm); SqlDataReader reader = cmd1.ExecuteReader();//定义reader来判断返回结果是否为空 if (reader.Read()) { //以上这七行代码是先判断UserID是否存在再进行后续的操作,为什么要这样做呢?因为插入新的UserID,此UserID可能是数据库对应的表中已经存在了的,为了避免程序出现bug,所以要预先判断。 if (!reader.IsDBNull(0)) { reader.Close(); resoult = "数据库已存在相同的用户ID,请更改!"; } } else if (!reader.Read()) { reader.Close(); string strSql = "insert into users(UserID,UserName,Phone,QQ,Condition) values(@UserID,@UserName,@Phone,@QQ,@Condition)"; SqlCommand cmd = new SqlCommand(strSql, strCon); SqlParameter par1 = new SqlParameter("@UserID", UserID); cmd.Parameters.Add(par1); SqlParameter par2 = new SqlParameter("@UserName", UserName); cmd.Parameters.Add(par2); SqlParameter par3 = new SqlParameter("@Phone", Phone); cmd.Parameters.Add(par3); SqlParameter par4 = new SqlParameter("@QQ", QQ); cmd.Parameters.Add(par4); SqlParameter par5 = new SqlParameter("@Condition", Condition); cmd.Parameters.Add(par5); cmd.ExecuteNonQuery(); cmd.Dispose(); resoult = "数据已经被成功录入数据库!"; } return resoult; } catch (Exception ex) { throw ex; } finally { strCon.Close(); } } //删除数据接口实现方法 public string Deletedata(string UserID) { try { strCon.Open(); string _strSql = "select * from users where UserID=@UserID"; SqlCommand cmd1 = new SqlCommand(_strSql, strCon); SqlParameter parm = new SqlParameter("@UserID", UserID); cmd1.Parameters.Add(parm); SqlDataReader reader = cmd1.ExecuteReader(); if (reader.Read()) { //还是先查后操作,防bug。你们懂的! reader.Close(); string strSql = "delete from users where UserID=@UserID"; SqlCommand cmd = new SqlCommand(strSql, strCon); SqlParameter parn = new SqlParameter("@UserID", UserID); cmd.Parameters.Add(parn); cmd.ExecuteNonQuery(); cmd.Dispose(); resoult = "数据已经成功删除!"; } else if (!reader.Read()) { reader.Close(); resoult = "用户ID不存在,请确认后再更改!"; } return resoult; } catch (Exception ex) { throw ex; } finally { strCon.Close(); } } //更新数据接口实现代码 public string Updatedata(string UserID, string UserName, string Phone, string QQ, string Condition) { try { strCon.Open(); string _strSql = "select * from users where UserID=@UserID"; SqlCommand cmd1 = new SqlCommand(_strSql, strCon); SqlParameter parm = new SqlParameter("@UserID", UserID); cmd1.Parameters.Add(parm); SqlDataReader reader = cmd1.ExecuteReader(); if (reader.Read()) { //还是先查后操作,防bug。你们懂的! reader.Close(); string strSql = "update users set UserName=@UserName,Phone=@Phone,QQ=@QQ,Condition=@Condition where UserID=@UserID"; SqlCommand cmd = new SqlCommand(strSql, strCon); SqlParameter par1 = new SqlParameter("@UserID", UserID); cmd.Parameters.Add(par1); SqlParameter par2 = new SqlParameter("@UserName", UserName); cmd.Parameters.Add(par2); SqlParameter par3 = new SqlParameter("@Phone", Phone); cmd.Parameters.Add(par3); SqlParameter par4 = new SqlParameter("@QQ", QQ); cmd.Parameters.Add(par4); SqlParameter par5 = new SqlParameter("@Condition", Condition); cmd.Parameters.Add(par5); cmd.ExecuteNonQuery(); cmd.Dispose(); resoult = "数据已经被成功更新!"; } else if (!reader.Read()) { reader.Close(); resoult = "数据库表中不存在此用户ID,请更改!"; } return resoult; } catch (Exception ex) { throw ex; } finally { strCon.Close(); } } //查询数据接口实现代码 public string Selectdata(string UserID) { try { strCon.Open(); string _strSql = "select * from users where UserID=@UserID"; SqlCommand cmd1 = new SqlCommand(_strSql, strCon); SqlParameter parm = new SqlParameter("@UserID", UserID); cmd1.Parameters.Add(parm); SqlDataReader reader = cmd1.ExecuteReader(); if (reader.Read()) { //还是先查后操作,防bug。你们懂的! resoult = "查询结果=>"+"用户ID:" + reader.GetString(0) + ";" + "姓名:" + reader.GetString(1) + ";" + "电话号码:" + reader.GetString(2) + ";" + "QQ:" + reader.GetString(3) +";"+"健康状况:"+reader.GetString(4)+ "。"; reader.Close(); } else if (!reader.Read()) { reader.Close(); resoult = "您所查询的用户ID不存在!请重新输入!"; } return resoult; } catch (Exception ex) { throw ex; } finally { strCon.Close(); } }}
3在WPClient项目中添加服务引用。
这一步是最重要的,需要特别留意,具体方法是,右键单击WPClient项目---添加服务引用---发现,命名空间写WPService,点确定完成。具体如下图所示。
4Windows Phone 客户端设计
4.1mainpage.xaml导航页配置
在WPClient项目添加一下几个Insertdata.xaml、Deletedata.xaml、Updatedata.xaml、Selectdata.xaml。(具体方法是右键单击WPCient项目---添加---新建项),效果如下图所示:
在mainpage.xaml中加入以下代码。
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="SQL数据操作" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="增加数据" Click="button1_Click" Height="72" HorizontalAlignment="Left" Margin="123,35,0,0" Name="button1" VerticalAlignment="Top" Width="160" /> <Button Content="删除数据" Click="button2_Click" Height="72" HorizontalAlignment="Left" Margin="123,140,0,0" Name="button2" VerticalAlignment="Top" Width="160" /> <Button Content="更改数据" Click="button3_Click" Height="72" HorizontalAlignment="Left" Margin="123,254,0,0" Name="button3" VerticalAlignment="Top" Width="160" /> <Button Content="查询数据" Click="button4_Click" Height="72" HorizontalAlignment="Left" Margin="123,363,0,0" Name="button4" VerticalAlignment="Top" Width="160" /> </Grid> </Grid>
切换到mainpage.xmal.cs输入一下代码
public MainPage() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { this.NavigationService.Navigate(new Uri("/Insertdata.xaml", UriKind.Relative)); } private void button2_Click(object sender, RoutedEventArgs e) { this.NavigationService.Navigate(new Uri("/Deletedata.xaml", UriKind.Relative)); } private void button3_Click(object sender, RoutedEventArgs e) { this.NavigationService.Navigate(new Uri("/Updatedata.xaml", UriKind.Relative)); } private void button4_Click(object sender, RoutedEventArgs e) { this.NavigationService.Navigate(new Uri("/Selectdata.xaml", UriKind.Relative)); } }
4.2Insertdata.xaml模块设计,此模块实现数据的添加
双击打开Insertdata.xaml,添加以下代码:
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="插入数据" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Height="30" HorizontalAlignment="Left" Margin="9,21,0,0" Name="textBlock1" Text="用户ID:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="80,0,0,0" Name="textBox1" Text=" " VerticalAlignment="Top" Width="370" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,99,0,0" Name="textBlock2" Text="姓名:" VerticalAlignment="Top" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="6,185,0,0" Name="textBlock3" Text="电话:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="78,78,0,0" Name="textBox2" Text=" " VerticalAlignment="Top" Width="372" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="78,156,0,0" Name="textBox3" Text=" " VerticalAlignment="Top" Width="372" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="9,262,0,0" Name="textBlock4" Text="QQ:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="78,234,0,0" Name="textBox4" Text="" VerticalAlignment="Top" Width="372" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,336,0,0" Name="textBlock5" Text="健康状况:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="99,312,0,0" Name="textBox5" Text=" " VerticalAlignment="Top" Width="351" /> <Button Content="添加" Height="72" HorizontalAlignment="Left" Margin="12,390,0,0" Name="insertbnt" Click="insertbnt_Click" VerticalAlignment="Top" Width="160" /> <TextBlock FontSize="32" Height="119" HorizontalAlignment="Left" Margin="6,468,0,0" Name="insertinfo" Text=" " VerticalAlignment="Top" Width="444" /> </Grid>
双击打开Insertdata.xaml.cs,添加以下代码:
public Insertdata() { InitializeComponent(); } private void insertbnt_Click(object sender, RoutedEventArgs e) { if (textBox1.Text != null && textBox2.Text != null && textBox3.Text != null && textBox4.Text != null && textBox5.Text != null) { WPService.Service1Client insert = new WPService.Service1Client();//创建WCF服务实例 string UserID = this.textBox1.Text.Trim(); string UserName = this.textBox2.Text.Trim(); string Phone = this.textBox3.Text.Trim(); string QQ = this.textBox4.Text.Trim(); string Condition = this.textBox5.Text.Trim(); insert.InsertdataCompleted+=new EventHandler<WPService.InsertdataCompletedEventArgs>(insert_InsertdataCompleted);//监控处理过程 insert.InsertdataAsync(UserID,UserName,Phone,QQ,Condition);//数据传送 } else { MessageBox.Show("所有选项均不能为空!"); } } void insert_InsertdataCompleted(object sender,WPService.InsertdataCompletedEventArgs e) { insertinfo.Text = e.Result.ToString();//接收返回数据并显示 }}
4.3Deletedata.xaml模块设计,这一模块是实现删除的数据
双击Deletedata.xaml,添加以下代码
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="删除数据" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBlock1" Text="请输入要删除的用户ID:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="4,46,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="446" /> <Button Content="删除" Height="72" HorizontalAlignment="Left" Margin="4,124,0,0" Name="deletebnt" Click="deletebnt_Click" VerticalAlignment="Top" Width="160" /> <TextBlock Height="271" FontSize="32" HorizontalAlignment="Left" Margin="12,219,0,0" Name="deleteinfo" Text=" " VerticalAlignment="Top" Width="438" /> </Grid>
双击Deletedata.xaml.cs,添加以下代码
public Deletedata() { InitializeComponent(); } private void deletebnt_Click(object sender, RoutedEventArgs e) { if (textBox1.Text != null) { WPService.Service1Client delete = new WPService.Service1Client();//创建实例 string UserID = textBox1.Text.Trim(); delete.DeletedataCompleted+=new EventHandler<WPService.DeletedataCompletedEventArgs>(delete_DeletedataCompleted); delete.DeletedataAsync(UserID); } else { MessageBox.Show("请输入用户ID!"); } } void delete_DeletedataCompleted(object sender, WPService.DeletedataCompletedEventArgs e) { deleteinfo.Text = e.Result.ToString();//接收并显示数据 } }
4.4Updatedata.xaml模块设计,此模块实现数据的更新
双击Updatedata.xaml,添加如下代码
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="更新数据" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBlock1" Text="请输入用户ID:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="10,50,0,0" Name="textBox1" Text=" " VerticalAlignment="Top" Width="440" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,156,0,0" Name="textBlock2" Text="姓名:" VerticalAlignment="Top" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="6,239,0,0" Name="textBlock3" Text="手机:" VerticalAlignment="Top" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="6,320,0,0" Name="textBlock4" Text="QQ:" VerticalAlignment="Top" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="12,403,0,0" Name="textBlock5" Text="健康状况:" VerticalAlignment="Top" /> <Button Content="更改" Height="72" HorizontalAlignment="Left" Margin="0,453,0,0" Name="updatebnt" Click="updatebnt_Click" VerticalAlignment="Top" Width="160" /> <TextBlock FontSize="32" Height="70" HorizontalAlignment="Left" Margin="12,531,0,0" Name="updateinfo" Text="" VerticalAlignment="Top" Width="420" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="61,128,0,0" Name="textBox2" Text=" " VerticalAlignment="Top" Width="389" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="72,206,0,0" Name="textBox3" Text=" " VerticalAlignment="Top" Width="378" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="72,295,0,0" Name="textBox4" Text=" " VerticalAlignment="Top" Width="378" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="118,375,0,0" Name="textBox5" Text=" " VerticalAlignment="Top" Width="332" /> </Grid>
双击Updatedata.xaml.cs,添加如下代码
public Updatedata() { InitializeComponent(); } private void updatebnt_Click(object sender, RoutedEventArgs e) { if (textBox1.Text != null) { WPService.Service1Client update = new WPService.Service1Client(); string UserID = this.textBox1.Text.Trim(); string UserName = this.textBox2.Text.Trim(); string Phone = this.textBox3.Text.Trim(); string QQ = this.textBox4.Text.Trim(); string Condition = this.textBox5.Text.Trim(); update.UpdatedataCompleted+=new EventHandler<WPService.UpdatedataCompletedEventArgs>(update_UpdatedataCompleted); update.UpdatedataAsync(UserID, UserName, Phone, QQ, Condition); } else { MessageBox.Show("用户ID不能为空!"); } } void update_UpdatedataCompleted(object semder, WPService.UpdatedataCompletedEventArgs e) { updateinfo.Text = e.Result.ToString(); } }
4.5Selectdata.xaml模块设计,此模块实现数据的查询
双击Selectdata.xaml,并添加如下代码
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/> <TextBlock x:Name="PageTitle" Text="删除数据" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> </StackPanel> <!--ContentPanel - 在此处放置其他内容--> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="textBlock1" Text="请输入要删除的用户ID:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="4,46,0,0" Name="textBox1" Text="" VerticalAlignment="Top" Width="446" /> <Button Content="删除" Height="72" HorizontalAlignment="Left" Margin="4,124,0,0" Name="deletebnt" Click="deletebnt_Click" VerticalAlignment="Top" Width="160" /> <TextBlock Height="271" FontSize="32" HorizontalAlignment="Left" Margin="12,219,0,0" Name="deleteinfo" Text=" " VerticalAlignment="Top" Width="438" /> </Grid>
双击Selectdata.xaml.cs,并添加如下代码
public Deletedata() { InitializeComponent(); } private void deletebnt_Click(object sender, RoutedEventArgs e) { if (textBox1.Text != null) { WPService.Service1Client delete = new WPService.Service1Client(); string UserID = textBox1.Text.Trim(); delete.DeletedataCompleted+=new EventHandler<WPService.DeletedataCompletedEventArgs>(delete_DeletedataCompleted); delete.DeletedataAsync(UserID); } else { MessageBox.Show("请输入用户ID!"); } } void delete_DeletedataCompleted(object sender, WPService.DeletedataCompletedEventArgs e) { deleteinfo.Text = e.Result.ToString(); } }
5程序运行效果
5.1主界面
5.2 增加数据模块
5.3删除数据模块
5.4更新数据模块
5.5查询数据模块
关于本文的代码已经 共享到CSDN网站的代码资源里面的。各位朋友可以下载!
这是本人第一次写技术贴,难免有所纰漏和不足,请各位不吝赐教,提出改进意见,谢谢!
- Windows Phone实现对SQL Server 2008的增删改查
- Sql server 实现增删改查
- SQL server的增删改查练习
- Windows phone 8程序联系人的增删改查
- 【ASP.NET】利用Repeater完成对SQL Server数据库的增删改查
- C# 操作本地SQL Server实现增删改查
- 【SQL】JDBC之运用dbutils组件实现对数据库的增删改查等操作
- sql的增删改查
- SQL的增删改查
- 对SQL数据库的增删改查C#代码
- SQL对数据库的操作(增删查改)
- 操作DB~~对数据的增删改查!!sql语句
- SQL SERVER 2008 R2 增删改查之01
- Sql server语句(增删改查)
- SQL Server 基础之增删查改
- SQL Server 数据库增删改查语句
- Sql server语句(增删改查)
- mybatis实现的对数据的增删查改
- 美国历任总统
- BUAA_分切糕
- 第九次上机任务
- hdu 1086 线段相交
- 定义抽象基类Shape,由它派生出3个派生类,Circle、Rectangle、Triangle
- Windows Phone实现对SQL Server 2008的增删改查
- hdu 1210 简单数学模拟
- Linux 可加载内核模块剖析
- IE8中弹出窗口 隐藏地址栏
- vc api_获取系统信息和用户信息
- HDU/HDOJ 1242 Rescue 典型的迷宫广度优先搜索题
- Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
- hdu 1213 并差集
- hdu-4112-Break the Chocolate