locked
Form in ASPX to MySQL DB RRS feed

  • Question

  • User943374005 posted

    I have started a website on Visual Studio using Visual C#. ASP.NET Web Forms Site.  I also have a MySQL database that I would like the form I create to alter.  I have the form, here's a snippet: 

    <form id="form1" runat="server" method="post" action="dbconnect.cs">
        <div>
            <label>Type the project title here</label>
            <br />
            <textarea id="projectTitle"></textarea>

    I know I don't have the code right for the action because I'm new to this, although I have gotten the dbconnect.cs to change the MySQL db on it's own by hardcoding it.  I just don't know how to make the connection between the form and the dbconnect.cs.

    I'd like to be able to do an INSERT for my database when I go to dbconnect.cs.

    dbconnect.cs snippet:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.IO;
    //Add MySql Library
    using MySql.Data.MySqlClient;
    
    namespace ConnectCsharpToMysql
    {
        class DBConnect
        {
            private MySqlConnection connection;
            private string server;
            private string database;
            private string uid;
            private string password;
    
            //Constructor
            public DBConnect()
            {
                Initialize();
            }
    
            //Initialize values
            private void Initialize()
            {
                server = "servername";
                database = "databasename";
                uid = "username";
                password = "password";
                string connectionString;
                connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
    
                connection = new MySqlConnection(connectionString);
            }
    
    
            //open connection to database
            private bool OpenConnection()
            {
                try
                {
                    connection.Open();
                    return true;
                }
                catch (MySqlException ex)
                {
                    //When handling errors, you can your application's response based on the error number.
                    //The two most common error numbers when connecting are as follows:
                    //0: Cannot connect to server.
                    //1045: Invalid user name and/or password.
                    switch (ex.Number)
                    {
                        case 0:
                            MessageBox.Show("Cannot connect to server.  Contact administrator");
                            break;
    
                        case 1045:
                            MessageBox.Show("Invalid username/password, please try again");
                            break;
                    }
                    return false;
                }
            }
    
            //Close connection
            private bool CloseConnection()
            {
                try
                {
                    connection.Close();
                    return true;
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show(ex.Message);
                    return false;
                }
            }
    
            //Insert statement
            public void Insert()
            {
                string query = "INSERT INTO TestTable (idTestTable, itemA, itemB) VALUES(5, 'Hey Smith', '22')";
    
                //open connection
                if (this.OpenConnection() == true)
                {
                    //create command and assign the query and connection from the constructor
                    MySqlCommand cmd = new MySqlCommand(query, connection);
    
                    //Execute command
                    cmd.ExecuteNonQuery();
    
                    //close connection
                    this.CloseConnection();
                }
            }
    Thursday, May 30, 2013 12:17 PM

Answers

  • User-718146471 posted

    Ok, I think I see what you are doing now. What you want to remember is you should set your connection string value in your web.config so that way should that connection change, you only have to change it in one place. Any value that could change, we keep in web.config and reference it by key name. One thing you should be aware of though is that code you are referring to is for c#, not asp.net C#. That could be why you are struggling a little. I will use class files to set up my connection, however when it comes to passing values to the database, I will do that in the page's code behind. What you start with is a simple web form that contains your typical controls like textboxes, labels and a submit button. Once you have your form built, you double-click the submit button to expose the Submit_Clicked method in the code behind. This is how I would do it if it were me.

    Web.config file (your web.config may be different):

    <?xml version="1.0"?>
    <configuration>
        <appSettings>
    <!-- Any key values you declare would go here, remember, these are values that could change but are used in many places -->
        </appSettings>
        <connectionStrings>
        <add name="MySQLConn" connectionString="server=localhost;User Id=root;Persist Security Info=True;database=marctest;password=PASSWORD" providerName="MySql.Data.MySqlClient"/>
        </connectionStrings>
    </configuration>


    form.aspx

    <p style="text-align: center">
            <asp:Label ID="txtName" runat="server" Font-Size="0.9em" Font-Bold="true"></asp:Label></p>
        <p>
            To subscribe to the newsletter, enter your email address and click <strong><em>Subscribe</em></strong>.</p>
                <table style="width: 100%">
                <tr style="vertical-align:top;">
                    <td>
                        Email Address:</td>
                    <td>
                        <asp:TextBox ID="txtEmail" runat="server" Width="330px"></asp:TextBox><br />
                        <br />
                        <asp:Label ID="lblExists" runat="server" Font-Bold="True" Font-Names="Verdana" 
                            Font-Size="Small" ForeColor="Red"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><div style="text-align:center;">
                        <br />
                        <asp:Button ID="btnSubscribe" runat="server"
                            Text="Subscribe" Width="119px" onclick="btnSubscribe_Click" />
                        <br />
                        </div>                    
                    </td>
                </tr>
            </table>

    form.aspx.cs

        protected void btnSubscribe_Click(object sender, EventArgs e)
        {
            string _csConnStr = DBUtils.DBString;
            string checkAddy = "Select email from Recipients where email = '" + email + "'";
            SqlConnection conn = new SqlConnection(_csConnStr);
            SqlCommand cmd = new SqlCommand(checkAddy, conn);
            conn.Open(); 
            cmd.Parameters.AddWithValue("email", txtEmail.Text.ToString());
            SqlDataReader myData = cmd.ExecuteReader();
            if (myData.HasRows)
            {
                lblExists.Text = "Sorry, you are already subscribed.";
            }
            else
            {
                string insertaddy = "INSERT INTO Recipients (email) values (@email)";
                SqlConnection conn2 = new SqlConnection(_csDIETMI);
                conn2.Open();
                SqlCommand cmd2 = new SqlCommand(insertaddy, conn2);
                cmd2.Parameters.AddWithValue("email", txtEmail.Text.ToString());
                cmd2.ExecuteReader();
                conn2.Close();
                lblExists.Text = txtEmail.Text.ToString() + " has been successfully added.";
            }
            conn.Close();
        }
    

    dbconnect.cs

    public static class DBUtils
    {
        public static string DBString
        {
            get
            {
                string _cs = string.Empty;
    
                try
                {
                        _cs = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString;
                }
                catch { _cs = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString; }
                return _cs;
            }
        }
    

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, June 3, 2013 11:43 AM

All replies

  • User-718146471 posted

    What exactly is happening when you run the procedure? Have you set any breakpoints to test this db class file?

    Thursday, May 30, 2013 3:53 PM
  • User943374005 posted

    The db class file by itself will connect to the SQL database and do what I tell it to do in the code. My problem is having the code in the first script tell the second one what to do. 

    Sunday, June 2, 2013 4:36 PM
  • User-718146471 posted

    You can't post data to a .cs file, like this: 

    <form id="form1" runat="server" method="post" action="dbconnect.cs">

    You can call the cs file from code behind. Form submit is only used to call another web page.  If dbconnect were tied to an aspx page, you could re-write your form post code like this:  

    <form id="form1" runat="server" method="post" action="dbconnect.aspx"> 

    However, I suspect that since this is a class, you will need to call the class from code behind like this:

    using ConnectCsharpToMysql.DBConnect;
    
    if (Page.IsPostBack)
    {
    // in here you do your passing of variables to the class
    }


    Monday, June 3, 2013 6:31 AM
  • User943374005 posted

    bbcompent1

    using ConnectCsharpToMysql.DBConnect;
    
    if (Page.IsPostBack)
    {
    // in here you do your passing of variables to the class
    }

    Would this be WebPage.cs? Use code from behind my WebPage.aspx to call my dbconnect.cs.  

    Would another route be to make a dbconnect.aspx and have my post go to there and in that aspx use dbconnect.cs?

    Monday, June 3, 2013 10:21 AM
  • User-718146471 posted

    Yes, what you do is on the Submit_Click event, you will have a PostBack event. Inside that block, you do your dbconnect work. Inside the block, type in DBConnect. and see what methods and options appear after the period is struck.

    Monday, June 3, 2013 10:24 AM
  • User943374005 posted

    Okay, I was thinking I'd have to do a WebPage.aspx.cs and have that be where my server side code is, rather than in just a regular .cs file. But I guess I'll try to do the WebPage.cs instead.

    Monday, June 3, 2013 10:37 AM
  • User-718146471 posted

    For all things considered, that method of posting is reminiscent of Classic ASP which co-mingles visual elements and business logic together. I find by calling my class and then passing values to it in code behind, it keeps things consistent and cleaner. It takes a little getting used to especially if you are used to doing the form post method. In order to do it with a post, data will be populated by the values passed in the query string (address bar with variables following). I find the code behind method is cleaner in this case as well.

    Monday, June 3, 2013 10:58 AM
  • User943374005 posted

    I'll follow your lead. I'm brand new to ASP.net development and I'm trying to dive in pretty deep quickly.  

    So I've a WebPage.aspx with my visuals for my webpage. In that I'll have a form that has parameters to change values or view a database. I make a WebPage.cs that's using dbconnect.cs so that when I submit things in the form on WebPage.aspx it sends the information to WebPage.cs which then sends information to dbconnect.cs.  

    If that is all correct, the one thing I'm not following is why I'd do dbconnect.aspx if my WebPage.cs is doing the transferring of information. Is it because I'll have to make dbconnect.aspx display the database information, and becuase it's connected to dbconnect.cs that's how it's seeing the changes? 

    Monday, June 3, 2013 11:09 AM
  • User-718146471 posted

    Can you tell me where exactly you got this code from? If I can see the original article, I can probably guide you a bit better.

    Monday, June 3, 2013 11:11 AM
  • User943374005 posted

    Well the database code I got from: http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL

    It successfully connects to my database and if I hardcode information into the methods I can check my database and the values change. 

    Then I created a .aspx page that was able to make form and change some values on the page based on what I put inside of the forms, I did that from here: http://msdn.microsoft.com/en-us/library/k4cbh4dh.aspx

    Now my next is I want the changes from that .aspx file to instead change values in the database, so I'm trying to hook them up together. I'll first want to leave the methods in the database code hardcoded and just see that calling the methods is working. Then change it so that the form values are actually what's put into the database. 

    Monday, June 3, 2013 11:22 AM
  • User-718146471 posted

    Ok, I think I see what you are doing now. What you want to remember is you should set your connection string value in your web.config so that way should that connection change, you only have to change it in one place. Any value that could change, we keep in web.config and reference it by key name. One thing you should be aware of though is that code you are referring to is for c#, not asp.net C#. That could be why you are struggling a little. I will use class files to set up my connection, however when it comes to passing values to the database, I will do that in the page's code behind. What you start with is a simple web form that contains your typical controls like textboxes, labels and a submit button. Once you have your form built, you double-click the submit button to expose the Submit_Clicked method in the code behind. This is how I would do it if it were me.

    Web.config file (your web.config may be different):

    <?xml version="1.0"?>
    <configuration>
        <appSettings>
    <!-- Any key values you declare would go here, remember, these are values that could change but are used in many places -->
        </appSettings>
        <connectionStrings>
        <add name="MySQLConn" connectionString="server=localhost;User Id=root;Persist Security Info=True;database=marctest;password=PASSWORD" providerName="MySql.Data.MySqlClient"/>
        </connectionStrings>
    </configuration>


    form.aspx

    <p style="text-align: center">
            <asp:Label ID="txtName" runat="server" Font-Size="0.9em" Font-Bold="true"></asp:Label></p>
        <p>
            To subscribe to the newsletter, enter your email address and click <strong><em>Subscribe</em></strong>.</p>
                <table style="width: 100%">
                <tr style="vertical-align:top;">
                    <td>
                        Email Address:</td>
                    <td>
                        <asp:TextBox ID="txtEmail" runat="server" Width="330px"></asp:TextBox><br />
                        <br />
                        <asp:Label ID="lblExists" runat="server" Font-Bold="True" Font-Names="Verdana" 
                            Font-Size="Small" ForeColor="Red"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"><div style="text-align:center;">
                        <br />
                        <asp:Button ID="btnSubscribe" runat="server"
                            Text="Subscribe" Width="119px" onclick="btnSubscribe_Click" />
                        <br />
                        </div>                    
                    </td>
                </tr>
            </table>

    form.aspx.cs

        protected void btnSubscribe_Click(object sender, EventArgs e)
        {
            string _csConnStr = DBUtils.DBString;
            string checkAddy = "Select email from Recipients where email = '" + email + "'";
            SqlConnection conn = new SqlConnection(_csConnStr);
            SqlCommand cmd = new SqlCommand(checkAddy, conn);
            conn.Open(); 
            cmd.Parameters.AddWithValue("email", txtEmail.Text.ToString());
            SqlDataReader myData = cmd.ExecuteReader();
            if (myData.HasRows)
            {
                lblExists.Text = "Sorry, you are already subscribed.";
            }
            else
            {
                string insertaddy = "INSERT INTO Recipients (email) values (@email)";
                SqlConnection conn2 = new SqlConnection(_csDIETMI);
                conn2.Open();
                SqlCommand cmd2 = new SqlCommand(insertaddy, conn2);
                cmd2.Parameters.AddWithValue("email", txtEmail.Text.ToString());
                cmd2.ExecuteReader();
                conn2.Close();
                lblExists.Text = txtEmail.Text.ToString() + " has been successfully added.";
            }
            conn.Close();
        }
    

    dbconnect.cs

    public static class DBUtils
    {
        public static string DBString
        {
            get
            {
                string _cs = string.Empty;
    
                try
                {
                        _cs = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString;
                }
                catch { _cs = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString; }
                return _cs;
            }
        }
    

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Monday, June 3, 2013 11:43 AM
  • User943374005 posted

    So what do I say I'm "using" in Form.aspx.cs for it to see DBUtils since that class doesn't have a namespace? I figured it would just see it because it's static, but I'm getting errors. I currently have the class with DBUtils in a # class inside of the folder App_Code

    Monday, June 3, 2013 1:19 PM
  • User-718146471 posted

    I gave you a complete code sample so you could use my code as a boilerplate to help you on your way. Take the code I've given you and customize it to your needs. The concept of what you are doing (updating data) is at the basic root no different than the code I've given you.

    Monday, June 3, 2013 1:24 PM
  • User943374005 posted

    Okay, there has go to be something missing though for it to be a complete set of code right? Maying some references or I need to add some "using" at the top of Form.aspx.cs. I saw that I need to add "using System.Web.Configuration" for dbconnect.cs to not have any errors. Form.aspx.cs doesn't like DBUtils or SqlConnection or SqlCommand.  

    Monday, June 3, 2013 4:06 PM
  • User-718146471 posted

    Oh yeah, sorry about that, you need to do a Using DBUtils;

    Monday, June 3, 2013 4:12 PM
  • User943374005 posted

    Okay, and what's the reference I'll have to add to the project? Or even the assemply I need to add to the Web.config  http://tinypic.com/r/35mqr9x/5

    Monday, June 3, 2013 4:19 PM
  • User-718146471 posted

    Drop the dbconn.cs file into the code folder, then at the top of the file you want to use the db connection, put the Using DBUtils; there with the other usings. If that doesn't work, I'll get the corrected code to you in the morning.

    Monday, June 3, 2013 4:25 PM
  • User943374005 posted

    Yeah if you could shoot it over in the morning that'd be great. thanks for all the help :)

    Monday, June 3, 2013 4:31 PM
  • User-718146471 posted

    Ok, what you want to do is create a class file and then take the DBUtils class and paste the code into that file. That will create the proper code associations.

    Tuesday, June 4, 2013 10:05 AM
  • User943374005 posted

    So I created a new blank website. I then created a new empty class and put it inside of the App_Code folder. I pasted the code into there. The only error I got was with "WebConfigurationManager", but to fix that I just added "using System.Web;".   Then I added the Form.aspx code into my .aspx and it was fine. Then I added the form.aspx.cs code into mine and that's where the errors are. I put "using DBUtils;" in there and it doesn't know what that is.  That's the screenshot I attached previously. 

    Tuesday, June 4, 2013 10:12 AM
  • User-718146471 posted

    Take the Using out of it. The code I have doesn't do that because that class is a direct reference within the project.

    Tuesday, June 4, 2013 10:16 AM
  • User943374005 posted

    Okay so then either I have something here setup in the wrong folder or I need to add a reference in the Web.config or?

    http://tinypic.com/r/2vs120h/5

    Tuesday, June 4, 2013 10:21 AM
  • User-718146471 posted

    ZachAtttack, check your private messages.

    Tuesday, June 4, 2013 10:35 AM
  • User-718146471 posted

    Ok, where you see the red underline, right-click and then click Resolve > Using  and that should fix the problem. Where you see Sql (like SqlConnection) you have to change that to MySql (Like MySqlConnection).

    Tuesday, June 4, 2013 10:55 AM
  • User943374005 posted

    The MySql worked to get rid of those. The last 3 things underlined red are "DBUtils", "email", "_csDIETMI". When I right click them there's nothing that says Resolve. The options are: View Designer, Refactor, Organize Usings, Run Tests, Debug Tests, Go To Definition, Breakpoint, Find All References, View Call Hierarchy, Run To Cursor, Insert Snippet, Cut, Copy, Past, Outlining

    Tuesday, June 4, 2013 11:13 AM
  • User-718146471 posted

    email is a variable that you will pass from the front side of hte code. _cs should be _csConnStr.  Now, comment out Using DBUtils

    Tuesday, June 4, 2013 11:38 AM
  • User943374005 posted

    Yeah I figured that with email. I just don't see a reference for the script to know what that is.... and I don't have "using DBUtils".  

    With email and DBUtils underlined red (I bolded them below):

    using MySql.Data.MySqlClient;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void btnSubscribe_Click(object sender, EventArgs e)
        {
            string _csConnStr = DBUtils.DBString;
            string checkAddy = "Select email from Recipients where email = '" + email + "'";
            MySqlConnection conn = new MySqlConnection(_csConnStr);
            MySqlCommand cmd = new MySqlCommand(checkAddy, conn);
            conn.Open();
            cmd.Parameters.AddWithValue("email", txtEmail.Text.ToString());
            MySqlDataReader myData = cmd.ExecuteReader();
            if (myData.HasRows)
            {
                lblExists.Text = "Sorry, you are already subscribed.";
            }
            else
            {
                string insertaddy = "INSERT INTO Recipients (email) values (@email)";
                MySqlConnection conn2 = new MySqlConnection(_csConnStr);
                conn2.Open();
                MySqlCommand cmd2 = new MySqlCommand(insertaddy, conn2);
                cmd2.Parameters.AddWithValue("email", txtEmail.Text.ToString());
                cmd2.ExecuteReader();
                conn2.Close();
                lblExists.Text = txtEmail.Text.ToString() + " has been successfully added.";
            }
            conn.Close();
        }
    }


    Tuesday, June 4, 2013 11:46 AM
  • User-718146471 posted

    Worst case scenario, you could directly reference the database connection string like this:

    string _csConnStr = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString;

    Tuesday, June 4, 2013 12:05 PM
  • User943374005 posted

    Well I did that and for WebConfigurationManager to work I added "using System.Web.Configuration;" so that's fine now.  The only thing is email still has the error. Am I going to have to add:

    string email = reference to DB or the aspx form. 

    Tuesday, June 4, 2013 1:36 PM
  • User-718146471 posted

    You set the value of email like this:

    string email = txtemail.Text.ToString();

    Tuesday, June 4, 2013 1:49 PM
  • User943374005 posted

    Great, now there are no errors :) Time to read the code and figure out how to get something changed in my DB. 

    Tuesday, June 4, 2013 2:01 PM
  • User-718146471 posted

    Should you need help, just post your code and I'll jump in.

    Tuesday, June 4, 2013 2:08 PM
  • User943374005 posted

    I most likely will, if not today then Thursday. I really appreciate it. 

    Tuesday, June 4, 2013 2:50 PM
  • User943374005 posted

    Hi again. So I've got my site up, and the code running to change the database if I hit a button.  I'm currently trying to get the site to by default show information from the DB.  I have a label setup in the .aspx to show the info:

    <asp:Label ID="textTest" runat="server" Font-Size="0.9em" Font-Bold="true"></asp:Label>

    In order to get the code in my .aspx.cs to start immeditaely I've created a 

    public void start()
    {
    }
    

    and in the .aspx 

    <body>
        <form id="form1" runat="server">
            <% start(); %>

    so it gets called right away. 

    The code inside of the start() is where I'm struggling. So far I have this:

    string connectionString = WebConfigurationManager.ConnectionStrings["MySQLConn"].ConnectionString;
    string command = "SELECT * FROM TestTable";
    MySqlConnection connection = new MySqlConnection(connectionString);
    MySqlCommand cmdCommand = new MySqlCommand(command, connection);
    connection.Open();
    //textTest.Text = cmdCommand.  not sure here
    connection.Close();

    I'm not sure if displaying all the data through a string is a good idea, maybe I should've started with a table and done a databind.  Either way not too sure how to display it.  Thanks. 

    Friday, June 7, 2013 11:23 AM
  • User-718146471 posted

    This should get you to display the data from your database. Change the query to fit your needs. Instead of doing it that way, use a datatable structure for quick clean reads. Also its better to use a datareader for read-only queries, faster too :)
    Modified code from http://idealprogrammer.com/net-languages/code-samples/aspnet-table-load-sqldatareader-source-code/

    Page_Load(object sender, System.EventArgs e)
         {
             MySqlConnection con = new MySqlConnection("Server=(local)\\MySqlEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI");
             MySqlCommand cmd = new MySqlCommand();
             cmd.CommandText = "SELECT EmployeeID, FirstName + ' ' + LastName as FullName FROM Employees";
             cmd.Connection = con;
             DataTable Table1;
             Table1 = new DataTable("Employees");
             //creating a table named Employees
             DataRow Row1;
             //declaring row for the table
             DataColumn EmployeeID = new DataColumn("EmployeeID");
             //declaring a column named EmployeeID
             EmployeeID.DataType = System.Type.GetType("System.Int32");
             //setting the datatype for the column
             Table1.Columns.Add(EmployeeID);
             //adding the column to table
             DataColumn FullName = new DataColumn("FullName");
             FullName.DataType = System.Type.GetType("System.String");
             Table1.Columns.Add(FullName);
                 try {
                 con.Open();
                 MySqlDataReader reader = cmd.ExecuteReader();
                 //(CommandBehavior.SingleRow)
                 while (reader.Read()) {
                     Row1 = Table1.NewRow();
                     //declaring a new row
                     Row1["EmployeeID"] = reader.GetInt32(0);
                     //filling the row with values. Item property is used to set the field value.
                     Row1["FullName"] = reader.GetString(1);
                     //filling the row with values. adding FullName
                     Table1.Rows.Add(Row1);
                     }
                 reader.Close();
             }
             finally
             {
                 con.Close();
             }
             GridView1.DataSource = Table1;
             GridView1.DataBind();
         }
     }

    Friday, June 7, 2013 11:33 AM
  • User943374005 posted

    Does it matter that the link is for ADONET?

    And what is this: 

    TestID.DataType = System.Type.GetType("System.Int32");

    and:

    Row1["TestID"] = reader.GetInt32(0);

    The above line throws an error saying:  Data is Null. This method or property cannot be called on Null values.


    Friday, June 7, 2013 12:59 PM
  • User-718146471 posted

    That completely depends on your database schema. Those fields have to match the data type. If its numeric, that would be Int32. If it's text, that woudl be System.Varchar or System.String. ADO.net should work for this.

    Friday, June 7, 2013 1:02 PM
  • User943374005 posted

    ah okay, yeah all my datafields are strings. thanks :) 

    Friday, June 7, 2013 1:08 PM
  • User-718146471 posted

    Yeah, a string is generally not accepted by Integer that I've seen in my time. :)

    Friday, June 7, 2013 1:12 PM
  • User943374005 posted

    yeeeeeaaahhhhhhh... lol :P

    Friday, June 7, 2013 1:19 PM