1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

C# objects and Postgresql

Discussion in 'ASP.NET' started by pykie101, Jul 1, 2008.

  1. pykie101

    pykie101 New Member

    Joined:
    Jul 1, 2008
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    Hi, this is my first post, I'm pretty new to all this stuff, infact I haven't really tried programming in 4 years so please excuse if this is easy because for me it's stupid hard .... anyway

    I'm having a problem, I'm using PostgreSQL V8.3.3-1, Npgsql and Visual studio 2008 c#.

    I'm passed a dictionary of key, value (key been a string, value been an object). The code works fine with key and value both been strings but postgresql doesn't seem to like it when the value is an object. How can I correct my code to work when passed an object? I realise that rowsaffected is currently only storing the first value, that's fine. I just want to be able to run a query using an object datatype for now.
    I feel DbType.Object might be the problem.

    current error is: "InvalidCastException is unhandled by user code"

    sql is a query

    "SELECT username FROM users WHERE age = :Value1"


    Code:
    public static string GetSql(string sql, Dictionary<string, object> d)
            {
                string connection = System.Configuration.ConfigurationManager.Connecti  onStrings["POSTGRESQL_LOCAL"].ConnectionString;
                
                using (NpgsqlConnection conn = new NpgsqlConnection(connection))
                {
                    conn.Open();
                    using (NpgsqlCommand command = new NpgsqlCommand(sql, conn))
                    {
                        int i = 0;
     
                        foreach (KeyValuePair<string, object> kvp in d)
                        {
                            command.Parameters.Add(new NpgsqlParameter(kvp.Key, DbType.Object));
                            command.Parameters[i].Value = kvp.Value;
                            i++;
                        }
                        string rowsaffected = "error: No data";
                        using (NpgsqlDataReader dr = command.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                rowsaffected = dr[0].ToString();
                            }
                        }
     
                        conn.Close();
                        return rowsaffected;
     
                    }
     
                }
                
            }
    I hope I placed this on the correct forum.

    Thanks
     
  2. pykie101

    pykie101 New Member

    Joined:
    Jul 1, 2008
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    0
    For clarity, when I say both key and value are strings I mean I change the datatype to string for the value as well.
     

Share This Page