Web服务 - Web方法和数据库

时间:2012-12-02 18:22:34

标签: database web-services visual-studio

我正在尝试编写一个Web方法,使我能够通过Web服务直接将文本INSERT到sql表。我设法在Web服务xml页面上查看手动输入到表的任何文本。我现在想要做的是能够将数据从Web服务插入数据库。

这背后的理念是,用户能够通过Web服务访问视图并向数据库添加信息/文本。我将非常感谢在下面的WebMethod(public void InsertInfo ...)中解决问题的方向。

我想了解如何创建/添加将数据直接插入表格的文本框。或者通过Web服务将信息插入表中的任何其他方式。

namespace SkiFriendService
    {
        /// <summary>
        /// Summary description for Service1
        /// </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 Service1 : System.Web.Services.WebService
        {
            SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SkiFriendService.Properties.Settings.Setting"].ToString());


            [WebMethod]
            public string simpleMethod(String srt)
            {
                return "Hello "+srt;
            }


            [WebMethod]
            public int anotherSimpleMethod(int firstNum, int secondNum)
            {
                return firstNum + secondNum;
            }


            [WebMethod]
            public string[] getMessage(string from, string to) 
            {
                List<string> messages = new List<string>();
                con.Open();
                    string sqlquery = string.Format("select Message from MessageTable where Sender='{0}' and Receiver='{1}'", from, to);
                SqlCommand com = new SqlCommand(sqlquery, con);
                SqlDataReader sqlReader = com.ExecuteReader();
                while (sqlReader.Read()) 
                {
                    messages.Add(sqlReader.GetString(0));
                }
                con.Close();
                return messages.ToArray();
            }


            [WebMethod]
            public void InsertInfo(string sender, string receiver, string message)
            {
                List<string> messages = new List<string>();
                con.Open();
                string sql = "INSERT INTO MessageTable (Sender, Receiver, Message) VALUES (@Sender, @Receiver, @Message)";
                SqlCommand com = new SqlCommand(sql, con);
                SqlDataReader sqlReader = com.ExecuteReader();
                while (sqlReader.Read())
                {
                    messages.Add(sqlReader.GetString(0));
                }
                con.Close();

            }





            }



            }

我希望我对此已经足够清楚了。我还在学习这个,所以很多这对我来说都是新的。我将不胜感激任何帮助。谢谢

1 个答案:

答案 0 :(得分:2)

        [WebMethod]
        public void InsertInfo(...)
        {
            ...
            SqlDataReader sqlReader = com.ExecuteReader();

如果要插入数据,可能不希望在其名称中使用带有 DataReader 的内容。请改用DataAdapter


更大的问题

更大的问题是,您似乎已将代码复制并粘贴到InsertInfo Web方法中而不进行读取。如果你已经阅读了你的代码,你的大脑应该已经锁定了六个令牌中的至少一个,包括 Read Reader 。锁定之后,你的大脑应该对自己说:“自我,我在哪里我更新或插入*任何东西?我似乎只是阅读的东西。”

通过阅读其他人的代码,然后阅读您自己的代码来培养该技能。根据我的经验,只需阅读自己的代码,您就无法快速学习。我们的大脑似乎让我们的眼睛对自己的错误视而不见。