如何使用WCF服务将值插入SQL表? [英] How to insert a values to SQL table using WCF service?

查看:77
本文介绍了如何使用WCF服务将值插入SQL表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的webform页面中,我需要使用WCF服务向SQL表插入一个值。当我单独执行WCF文件时,该值已被调用,然后我连接到webform页面,该值尚未插入。



我尝试过:



Webform代码:



 <   asp:TextBox     value   =     class   = 表单控制    ID   =   Txtboxreg    runat  < span class =code-keyword> =  server   占位符  =  Reg.No * >  
< asp :TextBox value = class = form-control ID = txtdr runat = server 占位符 = 医生* >
< ; asp:TextBox class = 表格控制 < span class =code-attribute> ID
= txtSalutation runat = server 占位符 = 称呼* >
< ; asp:TextBox class = form-control ID = txtPatientName runat = server 占位符 = PatientName * >
< asp:TextBox class = form-control ID = txtAge runat = 服务器 占位符 = 年龄* >
< asp:TextBox class = 表单-control ID = txtdob runat = 服务器 占位符 = DOB * >
< asp:TextBox class = 表单控制 ID = txtGender runat = server 占位符 = 性别* >
< asp:TextBox class = 表单控制 ID = txtRemarks runat = server 占位符 = 备注 >
< asp:TextBox class = 表单控制 ID = txtAddress runat = 服务器 占位符 = 地址* >
< asp:TextBox class = 表格控制 ID = txtMobileNumber runat = server 占位符 = MobileNumber * >
< asp:TextBox class = form-control ID = txtCity runat = server 占位符 = 城市* >
< asp:TextBox = 表格 - control ID = txtCorporateName runat = server 占位符 = CorporateName > ;
< asp:TextBox class = 表单控件 ID < span class =code-keyword> = txtReferralDoctor runat = server 占位符 = ReferralDoctor >
< asp :按钮 ID = bbtb runat = server 文字 = SAVE OnClick = < span class =code-keyword> Button1_Click 宽度 = 87px / >

C#代码:



 使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Web;
使用 System.Web.UI;
使用 System.Text;
使用 System.Web.UI.WebControls;
使用 Wcftest.ServiceReference1;
使用 System.Web.UI.HtmlControls;
命名空间 Wcftest
{
public partial class WebForm1:System.Web.UI.Page
{
ServiceReference1.Service1Client objServiceClientobjService = new ServiceReference1.Service1Client();
受保护 void Page_Load( object sender,EventArgs e)
{

}
protected void Button1_Click( object sender,EventArgs e)
{
UserDetails userInfo = new UserDetails();
userInfo.Reg_No = Txtboxreg.Text;
userInfo.Doctor = txtdr.Text;
userInfo.Salutation = txtSalutation.Text;
userInfo.PatientName = txtPatientName.Text;
userInfo.Age = txtAge.Text;
userInfo.DOB = txtdob.Text;
userInfo.Gender = txtGender.Text;
userInfo.Address = txtAddress.Text;
userInfo.MobileNumber = txtMobileNumber.Text;
userInfo.City = txtCity.Text;
userInfo.CorporateName = txtCorporateName.Text;
userInfo.Remarks = txtRemarks.Text;
userInfo.ReferralDoctor = txtReferralDoctor.Text;

string result = objServiceClientobjService.InsertUserDetails(userInfo);
LabelMessage.Text = result;
}
}
}



WCF代码



IService1.cs:



 使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Runtime.Serialization;
使用 System.ServiceModel;
使用 System.ServiceModel.Web;
使用 System.Text;
使用 System.Data.SqlClient;
使用 System.Data;

命名空间 Wcftest
{
// < span class =code-comment>注意:您可以使用重构菜单上的重命名命令在代码和配置文件中一起更改接口名称IService1。
[ ServiceContract]
public interface IService1
{

[OperationContract]
string GetData( int value );

[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);

[OperationContract]
string InsertUserDetails(UserDetails userInfo);
}


// 使用数据合约,如图所示下面的示例将复合类型添加到服务操作。
[DataContract]
public class CompositeType
{
bool boolValue = true ;
string stringValue = Hello;

[DataMember]
public bool BoolValue
{
get { return boolValue; }
set {boolValue = value ; }
}

[DataMember]
public string StringValue
{
get { return stringValue; }
set {stringValue = value ; }
}
}
public class UserDetails
{
string qReg_No = string .Empty;
string qDoctor = string .Empty;
string qSalutation = string .Empty;
string qPatientName = string .Empty;
string qAge = string .Empty;
string qDOB = string .Empty;
string qGender = string .Empty;
string qAddress = string .Empty;
string qMobileNumber = string .Empty;
string qCity = string .Empty;
string qCorporateName = string .Empty;
string qRemarks = string .Empty;
string qReferralDoctor = string .Empty;

[DataMember]
public string Reg_No
{
get { return qReg_No; }
set {qReg_No = value ; }
}
[DataMember]
public string Doctor
{
get { return qDoctor; }
set {qDoctor = value ; }
}
[DataMember]
public string Salutation
{
get { return qSalutation; }
set {qSalutation = value ; }
}
[DataMember]
public string PatientName
{
get { return qPatientName; }
set {qPatientName = value ; }
}
[DataMember]
public string 年龄
{
get { return qAge; }
set {qAge = value ; }
}
[DataMember]
public string DOB
{
get { return qDOB; }
set {qDOB = value ; }
}
[DataMember]
public string 性别
{
获取 {返回 qGender; }
set {qGender = value ; }
}
[DataMember]
public string 地址
{
get { return qAddress; }
set {qAddress = value ; }
}
[DataMember]
public string MobileNumber
{
get { return qMobileNumber; }
set {qMobileNumber = value ; }
}
[DataMember]
public string 城市
{
get { return qCity; }
set {qCity = value ; }
}
[DataMember]
public string CorporateName
{
get { return qCorporateName; }
set {qCorporateName = value ; }
}
[DataMember]
public string 备注
{
get { return qRemarks; }
set {qRemarks = value ; }
}
[DataMember]
public string ReferralDoctor
{
get { return qReferralDoctor; }
set {qReferralDoctor = value ; }
}
}
}



Service1.svc:



 使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Runtime.Serialization;
使用 System.ServiceModel;
使用 System.ServiceModel.Web;
使用 System.Text;
使用 System.Data.SqlClient;
使用 System.Data;

命名空间 Wcftest
{
// < span class =code-comment>注意:您可以使用重构菜单上的重命名命令将代码,svc和配置文件中的类名Service1一起更改。
// 注意:要启动WCF测试客户端以测试此服务,请选择Service1.svc或Service1.svc。解决方案资源管理器中的cs并开始调试。
public class Service1:IService1
{
public string GetData( int value
{
return string .Format( 您输入了:{0} value );
}

public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null
{
throw new ArgumentNullException( composite );
}
if (composite.BoolValue)
{
composite.StringValue + = 后缀;
}
return 复合;
}
public string InsertUserDetails(UserDetails userInfo)
{
string 消息;
SqlConnection con = new SqlConnection( 数据Source =。; initial catalog = xyz; user id = 123; password = 123);
con.Open();
SqlCommand cmd = new SqlCommand( insert进入quickreg(qReg_No,qDoctor,qSalutation,qPatientName,qAge,qDOB,qGender,qAddress,qMobileNumber,qCity,qCorporateName,qRemarks,qReferralDoctor)值(@ Reg_No,@ Doctor,@ Salutation,@ PatientName,@ Age,@ DOB,@性别,@地址,@ MobileNumber,@ City,@ CorporateName,@ Remarks,@ ReferralDoctor),con);
cmd.Parameters.AddWithValue( @ Reg_No,userInfo.Reg_No);
cmd.Parameters.AddWithValue( @ Doctor,userInfo.Doctor);
cmd.Parameters.AddWithValue( @ Salutation,userInfo.Salutation);
cmd.Parameters.AddWithValue( @ PatientName,userInfo.PatientName);
cmd.Parameters.AddWithValue( @ Age,userInfo.Age);
cmd.Parameters.AddWithValue( @ DOB,userInfo.DOB);
cmd.Parameters.AddWithValue( @ Gender,userInfo.Gender);
cmd.Parameters.AddWithValue( @ Address,userInfo.PatientName);
cmd.Parameters.AddWithValue( @ MobileNumber,userInfo.MobileNumber);
cmd.Parameters.AddWithValue( @ City,userInfo.City);
cmd.Parameters.AddWithValue( @ CorporateName,userInfo.CorporateName);
cmd.Parameters.AddWithValue( @ Remarks,userInfo.Remarks);
cmd.Parameters.AddWithValue( @ ReferralDoctor,userInfo.ReferralDoctor);

int result = cmd.ExecuteNonQuery();
if (result == 1
{
Message = userInfo.Reg_No + 已成功插入详细信息;
}
else
{
Message = userInfo.Reg_No + 未成功插入详细信息;
}
con.Close();
return 消息;
}
}
}

解决方案

InputUserDetails中方法,将所有代码放在try / catch块中,并在catch部分中放置一个断点。如果您的sql内容有问题,它将在异常中显示。


显示错误您在插入时获得的内容然后我们可以提供解决方案。

In my webform page I need to insert a value to SQL table by using WCF Service. When I execute WCF file alone the value has been invoked then I connect to the webform page the value has not been inserted.

What I have tried:

Webform Code:

<asp:TextBox value="" class="form-control" ID="Txtboxreg" runat="server" placeholder="Reg.No*">
  <asp:TextBox value="" class="form-control" ID="txtdr" runat="server" placeholder="Doctor*">
  <asp:TextBox class="form-control" ID="txtSalutation" runat="server" placeholder="Salutation*">
  <asp:TextBox class="form-control" ID="txtPatientName" runat="server" placeholder="PatientName*">
  <asp:TextBox class="form-control" ID="txtAge" runat="server" placeholder="Age*">
  <asp:TextBox class="form-control" ID="txtdob" runat="server" placeholder="DOB*">
  <asp:TextBox class="form-control" ID="txtGender" runat="server" placeholder="Gender*">
  <asp:TextBox class="form-control" ID="txtRemarks" runat="server" placeholder="Remarks">
  <asp:TextBox class="form-control" ID="txtAddress" runat="server" placeholder="Address*">
  <asp:TextBox class="form-control" ID="txtMobileNumber" runat="server" placeholder="MobileNumber*">
  <asp:TextBox class="form-control" ID="txtCity" runat="server" placeholder="City*">
  <asp:TextBox class="form-control" ID="txtCorporateName" runat="server" placeholder="CorporateName">
  <asp:TextBox class="form-control" ID="txtReferralDoctor" runat="server" placeholder="ReferralDoctor">
  <asp:Button ID="bbtb" runat="server" Text="SAVE" OnClick="Button1_Click" Width="87px" />

C# Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Text;
using System.Web.UI.WebControls;
using Wcftest.ServiceReference1;
using System.Web.UI.HtmlControls;
namespace Wcftest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        ServiceReference1.Service1Client objServiceClientobjService = new ServiceReference1.Service1Client();
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            UserDetails userInfo = new UserDetails();
            userInfo.Reg_No = Txtboxreg.Text;
            userInfo.Doctor = txtdr.Text;
            userInfo.Salutation = txtSalutation.Text;
            userInfo.PatientName = txtPatientName.Text;
            userInfo.Age = txtAge.Text;
            userInfo.DOB = txtdob.Text;
            userInfo.Gender = txtGender.Text;
            userInfo.Address = txtAddress.Text;
            userInfo.MobileNumber = txtMobileNumber.Text;
            userInfo.City = txtCity.Text;
            userInfo.CorporateName = txtCorporateName.Text;
            userInfo.Remarks = txtRemarks.Text;
            userInfo.ReferralDoctor = txtReferralDoctor.Text;

            string result = objServiceClientobjService.InsertUserDetails(userInfo);
            LabelMessage.Text = result;
        }
    }
}


WCF Code

IService1.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Wcftest
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        [OperationContract]
        string InsertUserDetails(UserDetails userInfo);
    }


    // Use a data contract as illustrated in the sample below to add composite types to service operations.
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }
    public class UserDetails
    {
        string qReg_No = string.Empty;
        string qDoctor = string.Empty;
        string qSalutation = string.Empty;
        string qPatientName = string.Empty;
        string qAge = string.Empty;
        string qDOB = string.Empty;
        string qGender = string.Empty;
        string qAddress = string.Empty;
        string qMobileNumber = string.Empty;
        string qCity = string.Empty;
        string qCorporateName = string.Empty;
        string qRemarks = string.Empty;
        string qReferralDoctor = string.Empty;

        [DataMember]
        public string Reg_No
        {
            get { return qReg_No; }
            set { qReg_No = value; }
        }
        [DataMember]
        public string Doctor
        {
            get { return qDoctor; }
            set { qDoctor = value; }
        }
        [DataMember]
        public string Salutation
        {
            get { return qSalutation; }
            set { qSalutation = value; }
        }
        [DataMember]
        public string PatientName
        {
            get { return qPatientName; }
            set { qPatientName = value; }
        }
        [DataMember]
        public string Age
        {
            get { return qAge; }
            set { qAge = value; }
        }
        [DataMember]
        public string DOB
        {
            get { return qDOB; }
            set { qDOB = value; }
        }
        [DataMember]
        public string Gender
        {
            get { return qGender; }
            set { qGender = value; }
        }
        [DataMember]
        public string Address
        {
            get { return qAddress; }
            set { qAddress = value; }
        }
        [DataMember]
        public string MobileNumber
        {
            get { return qMobileNumber; }
            set { qMobileNumber = value; }
        }
        [DataMember]
        public string City
        {
            get { return qCity; }
            set { qCity = value; }
        }
        [DataMember]
        public string CorporateName
        {
            get { return qCorporateName; }
            set { qCorporateName = value; }
        }
        [DataMember]
        public string Remarks
        {
            get { return qRemarks; }
            set { qRemarks = value; }
        }
        [DataMember]
        public string ReferralDoctor
        {
            get { return qReferralDoctor; }
            set { qReferralDoctor = value; }
        }
    }
}


Service1.svc:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Wcftest
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    // NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }
        public string InsertUserDetails(UserDetails userInfo)
        {
            string Message;
            SqlConnection con = new SqlConnection("Data Source=.;initial catalog=xyz;user id=123;password=123");
            con.Open();
            SqlCommand cmd = new SqlCommand("insert into quickreg(qReg_No,qDoctor,qSalutation,qPatientName,qAge,qDOB,qGender,qAddress,qMobileNumber,qCity,qCorporateName,qRemarks,qReferralDoctor) values (@Reg_No,@Doctor,@Salutation,@PatientName,@Age,@DOB,@Gender,@Address,@MobileNumber,@City,@CorporateName,@Remarks,@ReferralDoctor)", con);
            cmd.Parameters.AddWithValue("@Reg_No", userInfo.Reg_No);
            cmd.Parameters.AddWithValue("@Doctor", userInfo.Doctor);
            cmd.Parameters.AddWithValue("@Salutation", userInfo.Salutation);
            cmd.Parameters.AddWithValue("@PatientName", userInfo.PatientName);
            cmd.Parameters.AddWithValue("@Age", userInfo.Age);
            cmd.Parameters.AddWithValue("@DOB", userInfo.DOB);
            cmd.Parameters.AddWithValue("@Gender", userInfo.Gender);
            cmd.Parameters.AddWithValue("@Address", userInfo.PatientName);
            cmd.Parameters.AddWithValue("@MobileNumber", userInfo.MobileNumber);
            cmd.Parameters.AddWithValue("@City", userInfo.City);
            cmd.Parameters.AddWithValue("@CorporateName", userInfo.CorporateName);
            cmd.Parameters.AddWithValue("@Remarks", userInfo.Remarks);
            cmd.Parameters.AddWithValue("@ReferralDoctor", userInfo.ReferralDoctor);

            int result = cmd.ExecuteNonQuery();
            if (result == 1)
            {
                Message = userInfo.Reg_No + " Details inserted successfully";
            }
            else
            {
                Message = userInfo.Reg_No + " Details not inserted successfully";
            }
            con.Close();
            return Message;
        }
    }
}

解决方案

In your InputUserDetails method, put all of the code in a try/catch block, and put a breakpoint in the catch part. If there's a problem with your sql stuff, it will be revealed in the exception.


Show Error what you are getting while inserting then we can provide solution.


这篇关于如何使用WCF服务将值插入SQL表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆