Hi Chris,

Thanks for the example.  I've downloaded a bunch of stuff from various web
sites, including the Npgsql manual, so I'll be doing some reading this
weekend.

I'm not having any trouble with making a direct connection from a page.  I'm
just trying the abstract the database connections, and I really can't say
I'm having any problems yet.  I just haven't finished writing all the code.
I'll get back to you once I start getting some actual error messages.

Carl

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Chris Aitken
Sent: Wednesday, June 08, 2005 7:05 AM
To: [EMAIL PROTECTED]
Cc: mono-list@lists.ximian.com
Subject: RE: [Mono-list] Npgsql.dll

> How about some examples of inserts and updates using 
> parameters?  I think I'm using strings, integers, and 
> booleans, and byte[]s for parameters.

Inserting and updating is pretty simple.

Once you have written your sproc, you call it as:

SELECT update_sproc("string",int,"bool","byte[]s")

An app I wrote had:

Public static void Update ()
{
        OpenCon();

        string strSQL;
        int result;

        strSQL = SELECT update_squash(" + "" + playername + "" + "," +
playedtoday + "," + wontoday + ")";

        NpgsqlCommand UpdateCmd = new NpgsqlCommand(strSQL,connSquash);

        result = (int)UpdateCmd.ExecuteScalar();

        if (result ==1)
                Console.Writeline("Update Successful");
        else
                Console.Writeline("Oops!");

        CloseCon();
}

The sproc update_squash tool a players name(string), their games played that
day (int), and their games won that day (int). The sproc returned a 1 for
success, or a 0 for a FUBAR. I'll try to dig out the actual pl/PgSQL if
possible.




> Also, and example of NpgsqlCommand, such as would be used to 
> call a stored procedure?

Hopefully the above is a good enough example of how to call the command?
I'll email you the entire C# file if you wish, for the above example?

> Like:
> 
>               public User(string newConnectionString):
> base(newConnectionString)
>               {       }
> 
>               public int Create(string emailAddress,
>                       byte[] password,
>                       string firstName,
>                       string lastName,
>                       string address1,
>                       string address2,
>                       string city,
>                       string state,
>                       string zipCode,
>                       string homePhone,
>                       string country)
>               {
>                       int rowsAffected;
>                       SqlParameter[] 
>                               parameters = {
>                                                                new
> SqlParameter("@EmailAddress", SqlDbType.VarChar, 255),
>                                                                new
> SqlParameter("@Password", SqlDbType.Binary, 20),
>                                                                new
> SqlParameter("@FirstName", SqlDbType.VarChar, 30),
>                                                                new
> SqlParameter("@LastName", SqlDbType.VarChar, 50),
>                                                                new
> SqlParameter("@Address1", SqlDbType.VarChar, 80),
>                                                                new
> SqlParameter("@Address2", SqlDbType.VarChar, 80),
>                                                                new
> SqlParameter("@City", SqlDbType.VarChar, 40),
>                                                                new
> SqlParameter("@State", SqlDbType.VarChar, 2),
> 
>                                                                new
> SqlParameter("@ZipCode", SqlDbType.VarChar, 10),
>                                                                new
> SqlParameter("@HomePhone", SqlDbType.VarChar, 14),
>                                                                new
> SqlParameter("@Country", SqlDbType.VarChar, 50),
>                                                                new
> SqlParameter("@UserID", SqlDbType.Int, 4)
>                                                        };
> 
>                       parameters[0].Value = emailAddress;
>                       parameters[1].Value = password;
>                       parameters[2].Value = firstName;
>                       parameters[3].Value = lastName;
>                       parameters[4].Value = address1;
>                       parameters[5].Value = address2;
>                       parameters[6].Value = city;
>                       parameters[7].Value = state;
>                       parameters[8].Value = zipCode;
>                       parameters[9].Value = homePhone;
>                       parameters[10].Value = country;
>                       parameters[11].Direction =
> ParameterDirection.Output;
>       
>                       try 
>                       {
>                               RunProcedure("sp_Accounts_CreateUser",
> parameters, out rowsAffected);
>                       }
>                       catch ( SqlException e )
>                       {
>                               // 2601 is the number returned 
> when the primary key
>                               // is violated. We know if 
> we're violating the primary
>                               // key that the e-mail address 
> is already on file.
>                               // Its cheaper than actually 
> searching for that address before
>                               // inserting.
>                               if (e.Number == 2601) 
>                               {
>                                       return
> (int)CarlsWebs.WebModules.Accounts.ProcResultCodes.AccountAlre
> adyOnFile;
>                               }
>                               else 
>                               {
>                                       throw new AppException("An error
> occurred while executing the Accounts_CreateUser stored procedure",
>                                               e );
>                               }
>                       }
> 
>                       return (int)parameters[11].Value;
>               }

Chris


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list



_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to