0

Web サービスを介して SQL テーブルにテキストを直接 INSERT できるようにする Web メソッドを作成しようとしています。テーブルに手動で入力されたテキストを 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 メソッドにコピー アンド ペーストしたように見えることです。コードを読むとしたら、脳はReadまたはReaderのいずれかを含む 6 つのトークンの少なくとも 1 つにロックアップしているはずです。そして、閉じ込められた後、あなたの脳は、「自分、どこで何かを更新または挿入していますか?何かを読んでいるようです」と自分に言い聞かせたはずです。

他の人のコードを読んでから、自分のコードを読んでそのスキルを養います。私の経験では、自分のコードを読んだだけではすぐには学習できません。私たちの脳は、私たち自身の過ちに目がくらんでいるようです。

于 2012-12-02T18:29:44.273 に答える