【问题标题】:"Connection must be valid and open"“连接必须有效且打开”
【发布时间】:2016-01-17 23:06:51
【问题描述】:

我有这个错误,我一直在看谷歌和其他问题,我找不到我的问题的答案,这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Net.Http;
using System.Web.Http;
using MySql.Data.MySqlClient;

namespace WebService1
{
    /// <summary>
    /// Descripción breve de Service1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // Para permitir que se llame a este servicio web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
    // [System.Web.Script.Services.ScriptService]
    public class Service1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hola a todos";
        }


        [WebMethod]
        public string ConectarBaseDatos()
        {
            try
            {
                using (MySqlCommand cm = new MySqlCommand())
                {

                    string connection = @"Data Source=localhost:3306; Database=sistemadatosatletasfecovol; 
                                User ID=movil; Password=***";
                    MySqlConnection cn = new MySqlConnection(connection);


                    cm.CommandType = System.Data.CommandType.StoredProcedure;
                    cm.CommandText = "ingresarUsuario";
                    cm.Parameters.Add("_email", MySqlDbType.VarChar).Value = "asdasd@gmail.com";
                    cm.Parameters.Add("_password", MySqlDbType.VarChar).Value = "******";
                    cm.Connection = cn;
                    cm.ExecuteNonQuery();
                    MySqlDataReader cr = cm.ExecuteReader();
                    cr.Read();
                    string id;
                    id = cr["idUsuario"].ToString();
                    return id;
                }
            }
            catch (Exception ex)
            {
                return ex.ToString();
            }
        }
    }
}

在网上方法“ConectarBaseDatos”,当我执行cm.ExecuteNonQuery()时出现问题;

【问题讨论】:

    标签: c# mysql asp.net


    【解决方案1】:

    您必须在使用此代码调用 ExecuteNonQuery 之前打开连接

     cn.Open();
    

    然后,确保在 using 块的末尾关闭与此代码的连接:

     cn.Close();
    

    【讨论】:

    • 最好用'using'块包装连接(就像作者对MySqlCommand所做的那样),因为即使发生异常也可以保证连接会被关闭。那么,cn.Close 就不需要了。
    猜你喜欢
    • 2017-09-09
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    相关资源
    最近更新 更多