【发布时间】:2011-08-30 14:44:17
【问题描述】:
我发现很难实现一个 .NET Web 服务来将数据插入到我在 SQL Server 2008 中创建的数据库中。实现以下代码后我被卡住了:
namespace DataService
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(String entity)
{
String firstName = "";
SqlConnection myConnection = new SqlConnection(
@"Data Source=.\SQLEXPRESS;" +
@"Initial Catalog=student;User ID=sa;Password=123");
try
{
myConnection.Open();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "insert into stud values " +
"stud_name = '" + firstName + "'";
SqlDataReader myReader = myCommand.ExecuteReader();
//while
if (myReader.Read())
{
firstName = myReader["stud_name"].ToString();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
myConnection.Close();
}
return firstName;
}
}
}
这里的实体是我在表单中得到的 JSONArray:
[{"key0":"john","key2":"ann","key1":"joe"}]
我需要在数据库表中插入每个值,例如“john”。
【问题讨论】:
-
你的例外是什么?您的 aspnet Worker 是否具有实际访问数据库所需的所有权限?另外您正在执行阅读器,为什么不执行非查询。此外,将该连接包装在 using 中。
-
是的,这里可能会发生很多事情。调试它并找出异常是什么。可能正如@UrbanEsc 所说,您作为服务访问数据库的权限无效,或者您可能会通过不 Dispose()-ing 更快地释放池中的连接来耗尽数据库连接池。
-
插入查询出现异常。我不知道如何执行非查询。你能告诉我怎么做吗?顺便说一句,我拥有 SQL Server 中数据库的访问权限。我正在本地主机上工作。插入部分给我带来了问题
-
你应该用
Newtonsoft.Json之类的东西序列化你收到的数据 -
@Nico:什么是 Newtonsoft.Json?我该如何使用它?如果我序列化 JSONArray 会发生什么?
标签: c# .net web-services json sql-server-2008