我正在尝试编写一个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();
}
}
}
我希望我对此已经足够清楚了。我还在学习这个,所以很多这对我来说都是新的。我将不胜感激任何帮助。谢谢
答案 0 :(得分:2)
[WebMethod]
public void InsertInfo(...)
{
...
SqlDataReader sqlReader = com.ExecuteReader();
如果要插入数据,可能不希望在其名称中使用带有 DataReader 的内容。请改用DataAdapter。
更大的问题
更大的问题是,您似乎已将代码复制并粘贴到InsertInfo Web方法中而不进行读取。如果你已经阅读了你的代码,你的大脑应该已经锁定了六个令牌中的至少一个,包括 Read 或 Reader 。锁定之后,你的大脑应该对自己说:“自我,我在哪里我更新或插入*任何东西?我似乎只是阅读的东西。”
通过阅读其他人的代码,然后阅读您自己的代码来培养该技能。根据我的经验,只需阅读自己的代码,您就无法快速学习。我们的大脑似乎让我们的眼睛对自己的错误视而不见。