Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 52
  • Last Modified:

Execute stored procedure in mysql database

I have setup a mysql database that successfully connects and populates datagrids in my VS2015-c# application under development.
I have created a stored procedure:

CREATE DEFINER=`glsinger684`@`%` PROCEDURE `create_co_record`(IN `PrincipalID` VARCHAR(50))
      LANGUAGE SQL
      NOT DETERMINISTIC
      CONTAINS SQL
      SQL SECURITY DEFINER
      COMMENT 'Creates new company record with PrincipalID'
BEGIN
insert into company_info (PrincipalID)
values (PrincipalID);
END

I can successfully execute the stored procedure from a query using the management utility.
Next to test from my asp.net app I have the following code linked to a button:

using System;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data;
using System.Configuration;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Owin;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;

namespace EstimatingSheet_080916.Account
>
>
>
     protected void btnAddCo_Click(object sender, EventArgs e)
        {
            string conn = "server=mysqlcluster8.registeredsite.com;user id=glsinger684;persistsecurityinfo=True;password=<mypassword>;database=estimating";
            MySqlConnection sql_conn = new MySqlConnection(conn);

            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = sql_conn;
            sql_conn.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "CALL create_co_record (PrincipalID)";          
            cmd.Parameters.AddWithValue("PrincipalID", "TESTTEST");
            cmd.Parameters["PrincipalID"].Direction = ParameterDirection.Input;

When I run the app and hit the button nothing appears to happen.  I get no errors, but the desired effect of the SP does not occur.  Since the datagrids populate I don't see why this would be a permissions issue, but in any event any research on granting permissions that I have tried does not work.
Any suggestions would be much appreciated.
0
GregorySinger
Asked:
GregorySinger
1 Solution
 
Olaf DoschkeSoftware DeveloperCommented:
Is that all code? Where is cmd.ExecuteNonQuery()? You prepare everything, but don't execute, unless you just didn't posted that line. It's explains in a very simple way, why nothing would happen, though.

I think you also need a syntax with @param, @ prefixed to variable names...

...
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = sql_conn;
            sql_conn.Open();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "CALL create_co_record (@PrincipalID)";           
            cmd.Parameters.AddWithValue("@PrincipalID", "TESTTEST");
            cmd.Parameters["@PrincipalID"].Direction = ParameterDirection.Input;
            cmd.ExecuteNonQuery();

Open in new window


Bye, Olaf.
0
 
GregorySingerAuthor Commented:
Olaf,
You hit the nail on the head.  After a few minor modifications to other code lines, it worked just fine.
Thanks again!

Greg
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now