Click here to Skip to main content
15,892,809 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello everybody,
I have a test coming up soon for a job that I have applied for. I have been working on having this so I have it all down and memorized so I know exactly what I am doing when it comes to the test.
I have to do CRUD in C# and MySQL. I was wondering if I could get some examples of the best ways I should do this. I will show what I have but I feel like there are better and more efficient ways of doing this, or actually an easier way. I have been struggling with bits and pieces but I would really like to see what people have as suggested for me.
I also have to display the data from the database on the program(listbox, grid, etc I can pick what control)
Example 1

C#
public static bool UpdateActivity(Activity oldActivity,
Activity newActivity)
{
    SqlCeConnection connection = Connection.GetConnection();
    string updateStatement =
        "UPDATE Activities SET " +
        "ActivityName = @NewActivityName, " +
        "Calories = @NewCalories " +
        "WHERE ActivityName = @OldActivityName " +
        "AND Calories = @OldCalories ";
    SqlCeCommand updateCommand =
        new SqlCeCommand(updateStatement, connection);
    updateCommand.Parameters.AddWithValue(
        "@NewActivityName", newActivity.ActivityName);
    updateCommand.Parameters.AddWithValue(
        "@NewCalories", newActivity.Calories);
    updateCommand.Parameters.AddWithValue(
        "@OldActivityName", oldActivity.ActivityName);
    updateCommand.Parameters.AddWithValue(
        "@OldCalories", oldActivity.Calories);
    try
    {
        connection.Open();
        int count = updateCommand.ExecuteNonQuery();
        if (count > 0)
            return true;
        else
            return false;
    }
    catch (SqlCeException ex)
    {
        throw ex;
    }
    finally
    {
        connection.Close();
    }
}

public static int AddActivity(Activity activity)
{
    SqlCeConnection connection = Connection.GetConnection();
    string insertStatement =
        "INSERT Activities " +
        "(ActivityName, Calories) " +
        "VALUES (@ActivityName, @Calories)";
    SqlCeCommand insertCommand =
        new SqlCeCommand(insertStatement, connection);
    insertCommand.Parameters.AddWithValue(
        "@ActivityName", activity.ActivityName);
    insertCommand.Parameters.AddWithValue(
        "@Calories", activity.Calories);
    try
    {
        connection.Open();
        insertCommand.ExecuteNonQuery();
        //return IDENT_CURR(client.ClientID);
        return activity.ActivityID;
    }
    catch (SqlCeException ex)
    {
        throw ex;
    }
    finally
    {
        connection.Close();
    }
}

public static List<Activity> GetActivities()
{
    List<Activity> activities = new List<Activity>();
    SqlCeConnection connection = Connection.GetConnection();
    string selectStatement = "SELECT * " +
                             "FROM Activities ";
    SqlCeCommand selectCommand =
        new SqlCeCommand(selectStatement, connection);
    try
    {
        connection.Open();
        SqlCeDataReader activityReader = selectCommand.ExecuteReader();
        while (activityReader.Read())
        {
            Activity activity = new Activity();
            activity.ActivityID = (int)activityReader["ActivityID"];
            activity.ActivityName = activityReader["ActivityName"].ToString();
            activities.Add(activity);

        }
        activityReader.Close();
    }
    catch (SqlCeException ex)
    {
        throw ex;
    }

    finally
    {
        connection.Close();
    }
    return activities;
}

public static bool DeleteActivity(Activity activity)
{
    SqlCeConnection connection = Connection.GetConnection();
    string deleteStatement =
        "DELETE FROM Activities " +
        "WHERE ActivityName = @ActivityName " +
        "AND Calories = @Calories " +
        "AND ActivityID = @ActivityID";
    SqlCeCommand deleteCommand =
        new SqlCeCommand(deleteStatement, connection);
    deleteCommand.Parameters.AddWithValue(
        "@ActivityName", activity.ActivityName);
    deleteCommand.Parameters.AddWithValue(
        "@Calories", activity.Calories);
    deleteCommand.Parameters.AddWithValue(
         "@ActivityID", activity.ActivityID);

    try
    {
        connection.Open();
        int count = deleteCommand.ExecuteNonQuery();
        if (count > 0)
            return true;
        else
            return false;
    }
    catch (SqlCeException ex)
    {
        throw ex;
    }
    finally
    {
        connection.Close();
    }
}


public static Activity GetActivity(String ActivityName)
{
    SqlCeConnection connection = Connection.GetConnection();
    string selectStatement
        = "SELECT ActivityName, ActivityID, Calories "
        + "FROM Activities "
        + "WHERE ActivityName = @ActivityName";
    SqlCeCommand selectCommand =
        new SqlCeCommand(selectStatement, connection);
    selectCommand.Parameters.AddWithValue("@ActivityName", ActivityName);

    try
    {
        connection.Open();
        SqlCeDataReader activityReader =
            selectCommand.ExecuteReader(CommandBehavior.SingleRow);
        if (activityReader.Read())
        {
            Activity activity = new Activity();
            activity.ActivityName = activityReader["ActivityName"].ToString();
            activity.ActivityID = (int)activityReader["ActivityID"];
            activity.Calories = (int)activityReader["Calories"];
            return activity;
        }
        else
        {
            return null;
        }
    }
    catch (SqlCeException ex)
    {
        throw ex;
    }
    finally
    {
        connection.Close();
    }
}

Example 2
C#
public static string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\crudDB.mdf;Integrated Security=True";


public static void CreateUser(User user)
{
    SqlConnection connect = new SqlConnection(connectionString);
    string CreateStatement = "INSERT INTO [dbo].[Users](userName, userType) VALUES(@userName, @userType)";
    SqlCommand createCmd = new SqlCommand(CreateStatement, connect);
    createCmd.Parameters.AddWithValue("@userName", user.UserName);
    createCmd.Parameters.AddWithValue("@userType", user.UserType);
    try
    {
        connect.Open();
        createCmd.ExecuteNonQuery();
        //return user.UserID;
    }
    catch (SqlException sql) { MessageBox.Show(sql.Message.ToString()); }
    catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); }
    finally
    {
        connect.Close();
    }
}
private void btnClick_Click(object sender, EventArgs e)
{
    SqlConnection connect = new SqlConnection(connectionString);
    string name = txtName.Text;
    string age = txtAge.Text;
    using(connect)
    {
        SqlCommand cmd = new SqlCommand("INSERT INTO [dbo].[people](Name, Age) VALUES(@Name, @Age)", connect);
        cmd.Parameters.AddWithValue("@Name", txtName.Text);
        cmd.Parameters.AddWithValue("@Age", txtAge.Text);
        connect.Open();
        cmd.ExecuteNonQuery();
        connect.Close();
    }
}
Posted
Comments
Sinisa Hajnal 4-Feb-15 3:03am    
Only small improvements over this:
a) you can use @" long string here" so you don't have to use + to concatenate
b) you could move all that SQL into stored procedures and just call them by name
c) you could move all that SQL into separate file and call it like MySQL.SelectActivity. This would keep all your SQL in a single file.
d) Only SqlCEException I'm familiar with is for Compact Edition windows, are you programming mobile devices?
Nathan Minier 4-Feb-15 7:14am    
I'd think demonstrating use of EF would be better, as it would show familiarity with the an ORM specifically supported by MS.

But then, all things are relative. Honestly it mostly depends on what the employer is looking for: an OOP approach, a functional approach, or if an old-school structured approach will do.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900