GVKun编程网logo

WebService返回DataTable问题(webservice返回值)

6

在这里,我们将给大家分享关于WebService返回DataTable问题的知识,让您更了解webservice返回值的本质,同时也会涉及到如何更有效地.net异步调用webservice并取得Web

在这里,我们将给大家分享关于WebService返回DataTable问题的知识,让您更了解webservice返回值的本质,同时也会涉及到如何更有效地.net 异步调用webservice 并取得Webservice返回结果、.Net读取Excel 返回DataTable实例代码、C#使用OracleDataReader返回DataTable、CXF+Tomcat发布WebService问题的内容。

本文目录一览:

WebService返回DataTable问题(webservice返回值)

WebService返回DataTable问题(webservice返回值)

WebService返回DataTable问题
2007-09-28 0:28

今天做项目时,想在WebService中返回DataTable,在单位没成功,看网上有人说datable在.net1.1中是没有序列化的,不能直接在webservice中返回,可以返回dataset.晚上回家又上网找了一下,看到说法基本一致,还有一篇被引用很多的文章说在asp.net2.0中datatable已经被序列化了,但是还需要自己手动写一些代码才能从webservice中返回.我就想一定要写另写代码吗?继续查找,发现有人说必须给datable起名就可以返回了,还可以在调用端手动转换为datatable类型.又做了一遍,完全通过了,不用强制类型转换了.代码如下:

webservice文件中

[WebMethod]
public DataTable dt()
{
DataTable dt = new DataTable("default");
dt.Columns.Add("id");
dt.Columns.Add("name");
for (int i = 0; i < 10; i++)
{
DaTarow dr = dt.NewRow();
dr["id"] = i.ToString();
dr["name"] = "name" + i.ToString();
dt.Rows.Add(dr);
}
return dt;
}

调用页面中

WebService1.WebService1 service = new WebService1.WebService1();
DataTable dt = service.dt();
gvUser.DataSource = dt;
gvUser.DataBind();

最关键的是在webservice的方法中为datatable命名,否则就会报错.

.net 异步调用webservice 并取得Webservice返回结果

.net 异步调用webservice 并取得Webservice返回结果

在.net中,为我们提供了一种异步调用WebService的方法,我们在用wsdl.exe 生成代理类后,可爱的wsdl.exe为我们的代理类添加了很多事件方法,下面我给大家分享下我异步调用代码的过程...
代理类大家就直接去生成了哈。。

 

 

还有,插句话,利用webservice,我们也可以上传和下载一些比较小的文件,数据以字节流的(byte[])方式进行传送,我是在tomcat5.5 .net 3.5环境下做的测试,10多M的数据上传和下载都不会存在问题,利用这点又为我们在CS端上传和下载图片除了使用WebClient API又提供了另外一种方法。。

.Net读取Excel 返回DataTable实例代码

.Net读取Excel 返回DataTable实例代码

复制代码 代码如下:

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Collections;
using System.Data.OleDb;
using NuctechProject.DTO.Bll;
using System.Collections.Generic;
namespace NuctechProject.Layouts.Project
{
    public partial class IntroductionPlan : LayoutsPageBase
    {
        string url = Common.rootUrl;
        private string _strConn; //导入excel时的连接
        string pmurl = Common.proUrl;
        private UserBLL bll = new UserBLL();
        protected void Page_Load(object sender, EventArgs e)
        {
            hidProid.Value = Request.QueryString["proid"];
        }
        protected void BtnOK_Click(object sender, EventArgs e)
        {
            DataTable excelTable = null;

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                if (BaseInfoTemplateFile.HasFile)
                {
                    List<string> noInput = new List<string>();
                    string strLoginName = HttpContext.Current.User.Identity.Name; //获取用户名
                    string folderTemp = strLoginName.Substring(strLoginName.LastIndexOf(''\\'') + 1);
                    try
                    {
                        string extension = Path.GetExtension(BaseInfoTemplateFile.FileName); //获取文件的后缀
                        if (extension != null)
                        {
                            string fileException = extension.ToLower();
                            if (fileException == ".xlsx" || fileException == ".xls")
                            {
                                #region 读取Excel
                                string fileFolder = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/");
                                if (!Directory.Exists(fileFolder)) //根目录
                                {
                                    Directory.CreateDirectory(fileFolder); //判断上传目录是否存在     自动创建
                                }
                                BaseInfoTemplateFile.SaveAs(Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/" + BaseInfoTemplateFile.FileName));
                                string strFilepathNmae = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/" + BaseInfoTemplateFile.FileName);
                                string strExcel = ExcelSheetName(strFilepathNmae)[0].ToString();
                                excelTable = ExcelDataSource(strFilepathNmae, strExcel).Tables[0];
                                #endregion
                                //data是excel的数据
                                DataTable data = ExcelDataSource(strFilepathNmae, strExcel).Tables[0];
//try
                                    //{
                                if (data != null)
                                {

                                  
                                        foreach (DataRow row in data.Rows)
                                        {
                                            //读取
                                        }

                                }
                                //}
                                //catch (Exception)
                                //{
                                //    Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type=''text/javascript''>$.ligerDialog.closeWaitting();alert(''Excel表列名与系统不符合,请检查Excel表列名!'');</script>");
                                //    return;
                                //}
                            }
                            else
                            {
                                Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type=''text/javascript''>$.ligerDialog.closeWaitting();alert(''您选择的文件不是Excel格式!'');</script>");
                                return;
                            }
                        }
                    }
                    finally //最终要把临时存储的文件删除
                    {
                        string strFileFolder = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/");
                        if (Directory.Exists(strFileFolder)) //根目录
                        {
                            //Directory.CreateDirectory(strFileFolder);//判断上传目录是否存在     自动创建
                            Directory.Delete(strFileFolder, true);
                        }
                        else
                        {
                            Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type=''text/javascript''>ReturnPageValue();</script>");
                        }
                    }
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type=''text/javascript''>$.ligerDialog.closeWaitting();alert(''请选择导入文件!'');</script>");
                    return;
                }
            });
        }
        protected void BtnClose_Click(object sender, EventArgs e)
        {
            Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type=''text/javascript''>ReturnPageValue();</script>");
        }
        /// <summary>
        /// 连接到Excel
        /// </summary>
        /// <param name="filepath">文件路径</param>
        /// <param name="sheetname">sheet名字</param>
        /// <returns></returns>
        public DataSet ExcelDataSource(string filepath, string sheetname)
        {
            _strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath +
                       ";Extended Properties=''Excel 12.0;HDR=YES''";
            new OleDbConnection(_strConn);
            var oada = new OleDbDataAdapter("select * from [" + sheetname + "]", _strConn);
            var ds = new DataSet();
            oada.Fill(ds);
            return ds;
        }
        /// <summary>
        /// 获得Excel中的所有sheetname
        /// </summary>
        /// <param name="filepath">文件路径</param>
        /// <returns></returns>
        public ArrayList ExcelSheetName(string filepath)
        {
            _strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath +
                       ";Extended Properties=''Excel 12.0;HDR=YES''";
            var al = new ArrayList();
            var conn = new OleDbConnection(_strConn);
            conn.Open();
            DataTable sheetNames = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                new object[] { null, null, null, "TABLE" });
            conn.Close();
            if (sheetNames != null)
                foreach (DataRow dr in sheetNames.Rows)
                {
                    al.Add(dr[2]);
                }
            return al;
        }
    }
}

您可能感兴趣的文章:
  • asp.net 读取Excel数据到DataTable的代码

C#使用OracleDataReader返回DataTable

C#使用OracleDataReader返回DataTable

string data = string.Empty;
DataTable OutDataTable = new DataTable();
OracleDataReader daReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
OutDataTable = new DataTable();
DataRow dataRow;

//设置Table名和Column名
OutDataTable.TableName ="test";
for (int j = 0; j < daReader.FieldCount; j++)
{
//获取列名
OutDataTable.Columns.Add(daReader.GetName(j));
}

//循环取数据集合中的数据,存到DataTable中
do
{
while (daReader.Read())
{
dataRow = OutDataTable.NewRow();
for (int j = 0; j < daReader.FieldCount; j++)
{
data = daReader[j].ToString();
dataRow[j] = data;
}
OutDataTable.Rows.Add(dataRow);
}
} while (daReader.NextResult());

dtTemp = OutDataTable;

 

CXF+Tomcat发布WebService问题

CXF+Tomcat发布WebService问题

本人是个新手,最近在学习WebService  想利用CXF+Tomcat+eclipse发布自己的报务。但遇到了下面错误,请高手指点迷津:

接口定义如下:

     @WebService
    public interface SendMessageIntf {
    public void sendMessage(@WebParam(name = "to")String to,
   @WebParam(name = "message")String message,
   @WebParam(name = "serverIP")String serverIP)
   throws ParseException,InvalidArgumentException, SipException;

}

实现类如下:

public class SendSipMessageImpl implements SipSendMessageIntf{
 public SipSendSipMessage(int x)
 {
  int y=0;
  y=x+1;
 }
 @Override
 public void sendMessage(String to, String message, String serverIP)
   throws ParseException, InvalidArgumentException, SipException {
 }
}

问题如下:在实现类SendSipMessageImpl中如果带有参构造函数public SipSendSipMessage(int x)
 {
  int y=0;
  y=x+1;
 }
服务就不能正确发布,如果上面的有参构造函数改为无参构造函数public SipSendSipMessage()
 {
  int y=0;
  y=y+1;
 }
,服务就能正常发布。

请问这是为什么?谢谢!!!!!!

今天关于WebService返回DataTable问题webservice返回值的介绍到此结束,谢谢您的阅读,有关.net 异步调用webservice 并取得Webservice返回结果、.Net读取Excel 返回DataTable实例代码、C#使用OracleDataReader返回DataTable、CXF+Tomcat发布WebService问题等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇使用XFire开发webservice服务和客户端全攻略(xfire发布webservice)

下一篇使用JMETER做Webservice Security(WSS)测试(jmeter webdriver)