首页 > 代码库 > 数据库
数据库
先在mainpage里面的编写登陆界面,如图:
直接贴代码:
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="1" Grid.Column="2" Text="用户名" FontSize="18" HorizontalAlignment="Center"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="2" Text="密 码" FontSize="18" HorizontalAlignment="Center"></TextBlock>
<TextBox Grid.Row="1" Name="username_login" Grid.Column="3" Margin="3"></TextBox>
<PasswordBox Grid.Column="3" Name="password_login" Grid.Row="2" Margin="3"></PasswordBox> <Button Name="login" Grid.Row="3" Grid.Column="2" Content="确 定" Width="60" Height="25" Click="login_Click_1" ></Button>
<Button Name="register" Grid.Row="3" Grid.Column="3" Content="注 册" Width="60" Height="25" Click="register_Click_1" ></Button>
再重新添加一个新建项,建立silverlight页,命名为register
把红色区域删了,自己编写界面,注意有click事件的地方要自己重写,不然后台不会生成点击事件的方法
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="1" Grid.Column="2" Text="用户名" FontSize="18" HorizontalAlignment="Center"></TextBlock>
<TextBlock Grid.Row="2" Grid.Column="2" Text="密 码" FontSize="18" HorizontalAlignment="Center"></TextBlock>
<TextBox Grid.Row="1" Name="username" Grid.Column="3" Margin="3"></TextBox>
<PasswordBox Grid.Column="3" Name="password" Grid.Row="2" Margin="3"></PasswordBox>
<Button Name="ok" Grid.Column="2" Grid.Row="3" Width="70" Content="确 定" FontSize="16" Click="ok_Click_1"></Button>
<Button Name="cancel" Grid.Column="3" Grid.Row="3" Width="70" Content="取 消" FontSize="16" Click="cancel_Click_1"></Button>
好了,两个页面搭建好了,我们写一下跳转事件,比如 点击注册 肯定要跳到注册页面你才能输入注册信息 等等
我们在主页,也就是登陆界面的
选中click后的内容,右击定位到事件处理程序,会自动跳转到后台方法实现的地方
我们在红色区域里面要实现跳转事件
this.Content = new register()[A1] ;
好了,设置好弹出注册页面这个功能之后,我们在设置注册界面的取消事件,我想是实现注册成功或失败后,我点击取消,这个注册页面都会消失。同上面一样,我们进入到这个取消事件的处理程序中
this.Layoutroot.Visibility = Visibility.Collapsed;
好了,现在可以正式写注册了。
WCF服务
1.WCF服务
添加WCF服务
在IService1里面写方法申明
Service1在方法的具体内容
在这里面写具体方法的内容
现在我们先写一个注册用户的方法,首先需要在SQL中建立一张用户表,建立两个字段分别为用户名和密码。这里在SQL Server中建立Data数据库,并在数据库中建立register_info。
这里要特别注意,最好把数据库建立在和程序同一个目录下
好了,现在可以实现注册方法了
在方法申明中我们建立方法
[OperationContract]
bool createUser(string userName, string passWord);
接着我们实现这个申明的方法
在实现这个方法之前,我们要加两个引用
using System.Data;
using System.Data.SqlClient;
下面直接贴代码
public bool createUser(string userName, string passWord)
{
try
{
//连接数据库
SqlConnection conn = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;initial catalog=Data");[A2]
conn.Open(); //打开数据库
//设置command属性
SqlCommand com = new SqlCommand();
com.Connection = conn;
com.CommandType = CommandType.Text;
//操作数据库
com.CommandText = "insert into register_info([userName],[passWord]) values (‘" + userName + "‘,‘" + passWord + "‘)";
com.ExecuteNonQuery();
conn.Close();
return true;
}
catch (Exception ex)
{
return false;
}
}
好了,现在我们写好了注册数据库的方法了,我们在客户端调用它。
右击test.web 重新生成一下
在引用右击,添加服务引用
点击确定后,我们在刚才建立的注册页面
进入确定按钮的事件处理程序
在写确定事件之前我们还要加一个引用
using System.ServiceModel;
下面我们在方法里面写:
string uName = this.username.Text;
string pWord = this.password.Password; //注册createUserCompleted事件
host.Service1Client h = new host.Service1Client();
h.createUserCompleted += [A3] new EventHandler<host.createUserCompletedEventArgs>(h_createUserCompleted);
//调用createUserAsync()方法创建
h.createUserAsync(uName, pWord)[A4] ;
void h_createUserCompleted([A5] object sender,host.createUserCompletedEventArgs e)
{
if (e.Result)
{
MessageBox.Show("注册成功!");
}
else
{
MessageBox.Show("注册不成功!");
}
}
下面是解决登陆问题,同样我们要在WCF中编写登陆代码。有图有真相:
[OperationContract]
bool ReadUser(string userName, string passWord);
声明读数据库里面表,验证用户填写的登陆信息。
下面我们实现这个声明的方法
public bool ReadUser(string userName, string passWord)
{
try
{
SqlConnection conn = new SqlConnection(@"Data Source=(local);Integrated Security=SSPI;initial catalog=Data");
conn.Open();
string sql = "select * from register_info where register_info.userName=@username and register_info.passWord=@pwd";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@username", userName);
cmd.Parameters.AddWithValue("@pwd", passWord);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
return false;
}
}
好了,到这里,我们已经实现了验证登陆的这个功能了,下面我们重新生成一下test.web
我们就可以在客户端调用这个方法,来验证用户登陆时输入的信息是否正确
进入到事件处理程序
同样我们这里添加引用
using System.ServiceModel;
在登陆处理事件里面写入下面代码
string uName = this.username_login.Text.Trim();
string pWord = this.password_login.Password.Trim();
host.Service1Client h = new host.Service1Client();
h.ReadUserAsync(uName, pWord);
h.ReadUserCompleted += new EventHandler<host.ReadUserCompletedEventArgs>(h_ReadUserCompleted);
void h_ReadUserCompleted(object sender, host.ReadUserCompletedEventArgs e)
{
if (e.Result)
{
this.Content = new Map();[A6]
}
else
{
MessageBox.Show("登录失败!");
}
}
上面实现了,注册于登陆。下面我们回到webgis中,与地图打交道了。
这里我不发布地图,就用API里面的地图,给大家展示一下控件和查询,地图渲染。
首先我们建立的Map页面是空的,下面我们打开ArcGIS API for Silverlight按步骤一个个实现
1.加载地图
加载地图的时候我们直接加载 API里面那个做查询的那个地图,省得后面还要加
根据老师的要求,要会查询,图表展示,我推测他考spatial query的可能性比较大,因为这里面包含了查询,图表展示等功能。
我们就选这个地图
首先看看他的XAML代码
把这几个引用都加到我们建好的Map界面的XAML里面
下面我们直接把API里面的代码复制到我们的Map里面。
圈中的部分代表是查找地图属性的哪些字段,这个到时候考试的时候以给的地图文档为准,看它的属性字段有哪些就写哪些
好了,写好前段的代码了,现在我们写后台的CS代码
同样我们也是复制
我们进入Map的CS代码编写的地方,把API里的代码复制到这里
复制1和2,到下图位置
剩下的代码全部复制,注意复制的位置,
注册界面的命名
Initial catalog后面就是你建立的数据库名字
在打完+=后,按两下Tab建,会生成下面的一个方法
传入获取的你填写的用户名和密码到WCF服务里面
这个方法是上面一步生成的
这个界面是如果登陆成功后,将会跳转到这个页面。我们现在新建一个silverlight页面
命名为Map。
数据库