SelectCommand.Connection属性尚未初始化。 MySQL的

事实证明,我与SignalR,凡在HTML视图我提出以下要求到客户工作:SelectCommand.Connection属性尚未初始化。 MySQL的

var myHub = $.connection.myHub; 

var direccionWeb = $("#direccionWeb").val().toString();

$.connection.hub.url = direccionWeb + "/signalr";

$.connection.hub.start().done(function() {

myHub.server.broadcastMessageToPrinterReportTicket(global_venta, global_mesa, nombregarzon, idgrupo, grupo);

}).fail(function (error) {

console.error(error);

});

轮毂文件我有以下几点:

public void BroadcastMessageToPrinterReportTicket(String global_venta,String global_mesa,String nombregarzon,String idgrupo, String grupo) 

{

string namePrinter = group;

DataTable dt = new DataTable();

string sql = "SELECT " +

"cant," +

"det " +

"FROM producto " +

"WHERE [email protected]_venta AND venta>0 AND [email protected] AND comandasd.pedido=0";

conexion.conectar();

using (MySqlCommand command = new MySqlCommand(sql, conexion.con))

{

command.Parameters.AddWithValue("@global_venta", global_venta);

command.Parameters.AddWithValue("@idgrupo", idgrupo);

using (MySqlDataAdapter reader = new MySqlDataAdapter(command))

{

using (MySqlDataAdapter sda = new MySqlDataAdapter(command))

{

sda.Fill(dt);

}

}

}

conexion.cerrar();

Clients.All.printReport(datos, ........);

}

包含连接类的文件如下:

public void conectar() 

{

try

{

string ip = HttpContext.Current.Session["ip"].ToString();

string db = HttpContext.Current.Session["db"].ToString();

string user = HttpContext.Current.Session["user"].ToString();

string pass = HttpContext.Current.Session["pass"].ToString();

con = new MySqlConnection("server=" + ip + ";user id=" + user + ";password=" + pass + ";database=" + db + ";port=3306;Allow User Variables=true");

con.Open();

}

catch

{

}

}

但是当我尝试将数据添加到数据表,也就是上线,其中sda.Fill(DT)说,出现以下错误:SelectCommand.Connection属性尚未初始化。

奇怪的是,当我使用它是在控制器中声明相同的功能,它工作正常。我想要的是能够使用BroadcastMessageToPrinterReportTicket接收的参数获取数据表并将其发送给客户端。

如果有人知道如何纠正错误,或者一些帮助,将不胜感激。

问候

回答:

的SelectCommand.Connection属性尚未初始化

MySqlCommand.Connection属性需要可以使用的命令之前进行设置。例外是告诉你它还没有设置。

您使用,设置它的构造:

using (MySqlCommand command = new MySqlCommand(sql, conexion.con)) 

的逻辑推论是,conexion.con == null。我们发现con设置在conectar。但是,该代码周围有一个try/catch块。因此,在分配con之前,必须抛出异常(并忽略)。

最可能的解释是,HttpContext.Current.Session["..."]值中的一个(或多个)是null,因此调用.ToString()它抛出一个NullReferenceException

建议:

  1. 不要捕捉和忽略例外;他们经常表示需要正确处理的真正问题。
  2. 会话状态似乎是一个非常奇怪的地方存储数据库凭证;改为使用web.config设置。 (或者您可能希望刚开始时对它们进行硬编码以查看是否可以使代码的其余部分正常工作,然后在知道其他所有内容都正确时将它们移动到Settings)。

以上是 SelectCommand.Connection属性尚未初始化。 MySQL的 的全部内容, 来源链接: utcz.com/qa/267019.html

回到顶部