Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建.NET web服务以在SQL Server 2008中插入数据_C#_.net_Web Services_Json_Sql Server 2008 - Fatal编程技术网

C# 如何创建.NET web服务以在SQL Server 2008中插入数据

C# 如何创建.NET web服务以在SQL Server 2008中插入数据,c#,.net,web-services,json,sql-server-2008,C#,.net,Web Services,Json,Sql Server 2008,我发现很难实现一个.NET web服务来在SQL Server 2008中创建的数据库中插入数据。在实现以下代码后,我被卡住了: namespace DataService { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // [System.We

我发现很难实现一个.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”的每个值。

您需要使用ExecuteNonQuery()执行命令;ExecuteReader用于在执行select时从数据库获取数据

  SqlCommand myCommand = new SqlCommand();
                    myCommand.Connection = myConnection;
                    myCommand.CommandText = "insert into stud values " +
                        "stud_name = '" + firstName + "'";
     if(myCommand.ExecuteNonQuery() > 0)
     {
         //The command executed with affected rows > 0, OK.
     }
     else
     {
         //No rows affected by the execution. Error management.
     }

您需要使用ExecuteOnQuery()执行命令;ExecuteReader用于在执行select时从数据库获取数据

  SqlCommand myCommand = new SqlCommand();
                    myCommand.Connection = myConnection;
                    myCommand.CommandText = "insert into stud values " +
                        "stud_name = '" + firstName + "'";
     if(myCommand.ExecuteNonQuery() > 0)
     {
         //The command executed with affected rows > 0, OK.
     }
     else
     {
         //No rows affected by the execution. Error management.
     }
第90部分:

首先,如果您从客户端获得JSONArray,我建议您首先在列表中对其进行反序列化

JavascripSerializer js = new JavascriptSerializer<List<sring>>();
List<string> recordsToInsert= js.Deserialize(entity);
改进:

编辑:添加一些代码,演示如何反序列化问题中提供的示例JSON字符串:

private static void DoSerializationTest()
    {
        string entity="{\"key0\":\"john\",\"key2\":\"ann\",\"key1\":\"joe\"}";
        JavaScriptSerializer js = new JavaScriptSerializer();

        Dictionary<string,string> result= js.Deserialize<Dictionary<string,string>>(entity);
        foreach (var item in result)
        {
            Console.WriteLine("Value: "+item.Value);
            Console.WriteLine("Key :"+item.Key);
        }
    }
private static void DoSerializationTest()
{
字符串实体=“{\“key0\”:“john\”,“key2\”:“ann\”,“key1\”:“joe\”;
JavaScriptSerializer js=新的JavaScriptSerializer();
Dictionary result=js.反序列化(实体);
foreach(结果中的var项目)
{
Console.WriteLine(“值:+item.Value”);
Console.WriteLine(“Key:+item.Key”);
}
}
第90部分:

首先,如果您从客户端获得JSONArray,我建议您首先在列表中对其进行反序列化

JavascripSerializer js = new JavascriptSerializer<List<sring>>();
List<string> recordsToInsert= js.Deserialize(entity);
改进:

编辑:添加一些代码,演示如何反序列化问题中提供的示例JSON字符串:

private static void DoSerializationTest()
    {
        string entity="{\"key0\":\"john\",\"key2\":\"ann\",\"key1\":\"joe\"}";
        JavaScriptSerializer js = new JavaScriptSerializer();

        Dictionary<string,string> result= js.Deserialize<Dictionary<string,string>>(entity);
        foreach (var item in result)
        {
            Console.WriteLine("Value: "+item.Value);
            Console.WriteLine("Key :"+item.Key);
        }
    }
private static void DoSerializationTest()
{
字符串实体=“{\“key0\”:“john\”,“key2\”:“ann\”,“key1\”:“joe\”;
JavaScriptSerializer js=新的JavaScriptSerializer();
Dictionary result=js.反序列化(实体);
foreach(结果中的var项目)
{
Console.WriteLine(“值:+item.Value”);
Console.WriteLine(“Key:+item.Key”);
}
}


您有什么例外?您的aspnet工作人员是否拥有实际访问数据库所需的所有特权?另外,您正在执行一个读卡器,为什么不执行一个非查询呢。另外,用using包装这个连接。是的,这里可能会发生很多事情。调试它并找出异常是什么。可能正如@UrbanEsc所说的那样,您作为服务访问数据库的权限无效,或者您可能因为没有释放()连接而耗尽了数据库连接池,从而更快地释放池中的连接。我得到了insert查询的一个例外。我不知道如何执行非查询。你能告诉我怎么做吗?顺便说一句,我拥有SQL Server中数据库的访问权限。我正在本地主机上工作。插入部分给了我一个问题,您应该使用类似
Newtonsoft.Json
@Nico:Newtonsoft.Json是什么?我如何使用它?如果我序列化JSONArray会发生什么?你有什么例外?您的aspnet工作人员是否拥有实际访问数据库所需的所有特权?另外,您正在执行一个读卡器,为什么不执行一个非查询呢。另外,用using包装这个连接。是的,这里可能会发生很多事情。调试它并找出异常是什么。可能正如@UrbanEsc所说的那样,您作为服务访问数据库的权限无效,或者您可能因为没有释放()连接而耗尽了数据库连接池,从而更快地释放池中的连接。我得到了insert查询的一个例外。我不知道如何执行非查询。你能告诉我怎么做吗?顺便说一句,我拥有SQL Server中数据库的访问权限。我正在本地主机上工作。插入部分给了我一个问题,您应该使用类似
Newtonsoft.Json
@Nico:Newtonsoft.Json是什么?我如何使用它?如果我序列化JSONArray会发生什么?我应该在哪里编写序列化程序代码,应该在Android应用程序中编写吗?@Parth_90:不,JavascriptSerializer是.NET Framework的一部分,您不需要编写它。请参阅此处的文档:序列化后,我的输出是什么?我对.NET中的所有这些都是陌生的。请你帮我介绍一下代码好吗?@Parth#u 90:C#代码也在那里,只需单击带有C#名称的选项卡,即可查看C#中的示例。序列化后,我的输出是什么?我对.NET中的所有这些都是陌生的。请你能帮我了解一下有关代码的更多信息吗?我应该在哪里编写序列化程序代码,应该在我的Android应用程序中编写吗?@Parth_90:不,JavascriptSerializer是.NET Framework的一部分,你不需要编写它。请参阅此处的文档:序列化后,我的输出是什么?我对.NET中的所有这些都是陌生的。请你帮我介绍一下代码好吗?@Parth#u 90:C#代码也在那里,只需单击带有C#名称的选项卡,即可查看C#中的示例。序列化后,我的输出是什么?我对.NET中的所有这些都是陌生的。你能帮我提供一些关于代码的更多想法吗?