Npgsql.NpgsqlException:错误:42601:语法错误在“where”或附近

时间:2012-12-17 13:30:36

标签: asp.net web-services postgresql npgsql postgresql-9.2

我在asp.net中有followinf web服务

//setup profile
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void SetProfile(string userName, string firstName, string lastName, string imageUrl)
    {
        //create and open connection
        NpgsqlConnection profileConnection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["PrevueConnString"].ToString());
        profileConnection.Open();

        //create query and command
        string query = "INSERT into \"Users\" (\"FirstName\", \"LastName\", \"ImageUrl\") values(:fname, :lname, :imageUrl) where \"UserName\" = :user";
        NpgsqlCommand profileCommand = new NpgsqlCommand(query, profileConnection);

        profileCommand.Parameters.Add(new NpgsqlParameter("user", DbType.String));
        profileCommand.Parameters.Add(new NpgsqlParameter("fname", DbType.String));
        profileCommand.Parameters.Add(new NpgsqlParameter("lname", DbType.String));
        profileCommand.Parameters.Add(new NpgsqlParameter("imageUrl", DbType.String));

        profileCommand.Parameters[0].Value = userName;
        profileCommand.Parameters[1].Value = firstName;
        profileCommand.Parameters[2].Value = lastName;
        profileCommand.Parameters[3].Value = imageUrl;

        int result = profileCommand.ExecuteNonQuery();

        profileCommand.Dispose();
        profileConnection.Close();

        string json = new JavaScriptSerializer().Serialize(result);
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        Context.Response.Flush();
        Context.Response.Write(json);
    }

//setup profile [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public void SetProfile(string userName, string firstName, string lastName, string imageUrl) { //create and open connection NpgsqlConnection profileConnection = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["PrevueConnString"].ToString()); profileConnection.Open(); //create query and command string query = "INSERT into \"Users\" (\"FirstName\", \"LastName\", \"ImageUrl\") values(:fname, :lname, :imageUrl) where \"UserName\" = :user"; NpgsqlCommand profileCommand = new NpgsqlCommand(query, profileConnection); profileCommand.Parameters.Add(new NpgsqlParameter("user", DbType.String)); profileCommand.Parameters.Add(new NpgsqlParameter("fname", DbType.String)); profileCommand.Parameters.Add(new NpgsqlParameter("lname", DbType.String)); profileCommand.Parameters.Add(new NpgsqlParameter("imageUrl", DbType.String)); profileCommand.Parameters[0].Value = userName; profileCommand.Parameters[1].Value = firstName; profileCommand.Parameters[2].Value = lastName; profileCommand.Parameters[3].Value = imageUrl; int result = profileCommand.ExecuteNonQuery(); profileCommand.Dispose(); profileConnection.Close(); string json = new JavaScriptSerializer().Serialize(result); Context.Response.Clear(); Context.Response.ContentType = "application/json"; Context.Response.Flush(); Context.Response.Write(json); }

在调用Web服务时,我收到以下错误:

Npgsql.NpgsqlException:错误:42601:“where”或附近的语法错误

1 个答案:

答案 0 :(得分:2)

我想我想出了错误,我使用了'Where'子句和Insert命令,将其更改为Update,现在情况很顺利...... :)感谢您的帮助.. !!