在这里做一个功能,新增。在当下的这个Dome中,有两个端,客户端和服务端,在新增数据之前,第一步先是在数据库中写好存储过程,然后在新增界面中姓名是下拉选项的,所以要先写一个下拉框查询信息,这里写的是未匹配账号的员工信息,再来就是新增员工账号信息了,在这个存储过程中做了个判断,exists用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值true,指定一个子查询,检测行的存在。、
写好存储过程,第二步就是,写服务。[OperationContract]是操作契约,在写服务时需写。一般服务的格式都是一样的,先1、实例化对象数组;2、定义传递参数,以及传递参数的类型(传递过来的参数必须和数据库的参数保持一致);3、获取执行的存储过程名称,然后返回值。写好服务后需要执行;执行的结果是以下左边的图的结果就是成功的;接下来就是去配置服务,在点击编辑WCF配置,打开配置界面,点击新建服务,点开后点击浏览按钮,打开浏览界面时,点击向上一级的按钮,然后点击BLL->bin->Bebug->BLL.dll->找到你所需的服务,点击确定,回到新建服务界面,复制服务类型,点击下一步->下一步->下一步->下一步->下一步->到终结点地址这时,留空点击下一步->是->完成;完成后服务那就多了个服务BLL.WD_LoginWindow,点击BLL.WD_LoginWindow,给第一格填上BLL;点开终结点那里给name那粘贴刚刚复制的服务类型;然后点开高级->宿主环境的最后一个,点击新建,在第一个格那粘贴刚刚复制的服务类型在后面加上.svc,在第二个格那直接粘贴复制到的服务类型。复制一下一格的填写内容BLL.WD_LoginWindow.svc,点击确定。配置完后关闭页面,关闭页面时,需点击保存;要查看是否成功,执行服务端,然后在网址后加上BLL.WD_LoginWindow.svc;如显示下面的第三张图的结果,就是配置成功。
然后复制浏览器上的网址,到客户端添加服务引用会用到。
//查询未匹配账号的员工信息(下拉框)
[OperationContract]
public DataSet Loaded_SelectStaff()
{
SqlParameter[] mySqlParameter ={
new SqlParameter("@type",SqlDbType.NChar)
};
mySqlParameter[0].Value = "Loaded_SelectStaff";
DataSet ds = myDAL.QueryDataSet("UC_StaffAccountManage", mySqlParameter);
return ds;
}
//新增账号信息
[OperationContract]
public int Click_InsertStaffAccountManage(int staffID, string strAccounts, string strPassword, bool bleffective, string strNote)
{
SqlParameter[] mySqlParameter =
{
new SqlParameter("@type",SqlDbType.NChar),
new SqlParameter("@staff_id",SqlDbType.Int),
new SqlParameter("@operator_accounts",SqlDbType.NChar),
new SqlParameter("@operator_password",SqlDbType.NChar),
new SqlParameter("@effective",SqlDbType.Bit),
new SqlParameter("@note",SqlDbType.NChar),
};
//给对象赋值
mySqlParameter[0].Value = "Click_InsertStaffAccountManage";
mySqlParameter[1].Value = staffID;
mySqlParameter[2].Value = strAccounts;
mySqlParameter[3].Value = strPassword;
mySqlParameter[4].Value = bleffective;
mySqlParameter[5].Value = strNote;
int count = myDAL.UpdateData("UC_StaffAccountManage", mySqlParameter);
return count;
}
服务配置好后,就到客户端这边添加服务的应用,在添加服务引用界面地址那粘贴刚刚复制的网址。点击转到的按钮,看服务那是否有服务显示,如果没有就是在服务端那边没配置好,若有就修改一下命名空间点击确定就把服务应用进来了,在客户端这边就可以用了。如要打开新增界面需要通过新增按钮来打开新增页面。然后一个新增按钮的点击事件。这里页面的搭建就不显示出来了,直接就是通过事件来触发的。
<Button x:Name="btn_Insert" ToolBar.OverflowMode="Never" Content="新增" Width="50" Height="30" Margin="4" Style="{StaticResource ToolBarButton}" Click="btn_Insert_Click"/>
//新增按钮
private void btn_Insert_Click(object sender, RoutedEventArgs e)
{
WD_InsertStaffAccountManage myInsert = new WD_InsertStaffAccountManage();
myInsert.ShowDialog();
//刷新
SelectdgAccountManage();
}
新增界面的代码:
//新增保存
private void btn_Save_Click(object sender, RoutedEventArgs e)
{
try
{
//1、判断页面数据是否为空
if (cbo_Name.SelectedValue.ToString() != "" && txt_Account.Text.Trim() != "" && pw_Password.Password.Trim() != "")
{
//2、获取页面控件数据
int staffID = Convert.ToInt32(cbo_Name.SelectedValue);
string strAccounts = txt_Account.Text.Trim();
string strPassword = pw_Password.Password.Trim();
bool bleffective = (bool)chk_Effect.IsChecked;
string strNote = txt_Note.Text.Trim();
//3、执行新增
int intcount = myClient.Click_InsertStaffAccountManage(staffID, strAccounts, strPassword, bleffective, strNote);
//4、提示
if (intcount > 0)
{
MessageBoxResult dr = MessageBox.Show("您成功注册了一个新账号!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Asterisk);
if (dr == MessageBoxResult.OK)
{
this.Close();
}
}
else if (intcount == -1)
{
MessageBox.Show("账号重复!", "系统提示", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation);
}
}
else
{
MessageBox.Show("请把页面数据填写完整!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
catch (Exception)
{
throw;
}
}