0

我一直在尝试使用此 Web 服务返回列的总和,但它不起作用。请帮助。谢谢。我正在使用 Visual Studio 2010。它只是不断返回错误。System.InvalidOperationException:生成 XML 文档时出错。---> System.InvalidOperationException:无法序列化 DataTable。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using MySql.Data.MySqlClient;

namespace Transcript_System
{
    /// <summary>
    /// Summary description for check
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class check : System.Web.Services.WebService
    {

        [WebMethod]
    public DataTable connectoToMySql()
    {
        string connString = "SERVER=localhost" + ";" +
            "DATABASE=transcriptdb;" +
            "UID=root;" +
            "PASSWORD=;";

        MySqlConnection cnMySQL = new MySqlConnection(connString);

        MySqlCommand cmdMySQL = cnMySQL.CreateCommand();

        MySqlDataReader reader;

        cmdMySQL.CommandText = "SELECT SUM( Score ) FROM faculty_table WHERE Mat_No='PSC0908888'";

        cnMySQL.Open();

        reader = cmdMySQL.ExecuteReader();

        DataTable dt = new DataTable();
        dt.Load(reader);


        cnMySQL.Close();

        return dt;
    } 
            }
        }
4

3 回答 3

1

您可以通过 DataSet.GetXml() 将数据作为 xml 字符串从数据集中发送

并且用户可以使用 DataSet.ReadXml() 反序列化它

并通过 DataSet.Tables 从数据集中获取数据表

于 2013-10-31T18:46:05.830 回答
1

您不需要表,您只是从数据库中获取单个值,而是使用 Execute Scalar。

cnMySQL.Open();
string sum = mySqlcommand.ExecuteScalar();
cnMySQL.Close();
return sum;

并更改您的方法以返回字符串

于 2013-10-31T18:46:27.050 回答
0

您的 Web 方法正在返回一个 DataTable 类型的对象。也许您想将其更改为仅返回带有计数值的 int/string,而不是获取的 Datatable 实例!

于 2013-10-31T18:44:41.707 回答