0

我正在尝试编写一个 Web 方法,使我能够通过 Web 服务将文本直接插入到 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();

            }





            }



            }

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

4

1 回答 1

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

如果你想插入数据,你可能不想使用名称中带有DataReader的东西。请改用DataAdapter


更大的问题

一个更大的问题是,您似乎在未阅读的情况下将代码复制并粘贴到了 InsertInfo Web 方法中。如果你读过你的代码,你的大脑应该至少锁定了包括ReadReader在内的六个标记中的一个。锁定后,你的大脑应该对自己说,“我自己,我在哪里更新或插入*任何东西?我似乎只是在阅读东西。”

通过阅读其他人的代码,然后通过阅读自己的代码来培养这种技能。根据我的经验,仅仅通过阅读自己的代码不会很快学会。我们的大脑似乎让我们的眼睛对自己的错误视而不见。

于 2012-12-02T18:29:44.273 回答