gpt4 book ai didi

c# - SelectCommand.Connection 属性尚未初始化。数据库

转载 作者:行者123 更新时间:2023-11-29 06:49:42 28 4
gpt4 key购买 nike

事实证明,我正在使用 SignalR,在 html View 中,我向客户端发出以下请求:

 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);
});

在 Hub 文件中,我有以下内容:

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 venta=@global_venta AND venta>0 AND menu.grupo=@idgrupo 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
{

}
}

但是当我尝试向 DataTable 添加数据时,即在 sda.Fill (dt) 所在的行上,出现以下错误:SelectCommand.Connection 属性尚未初始化。

奇怪的是,当我使用它与 Controller 中声明的函数相同时,它可以正常工作。我想要的是能够获取包含 BroadcastMessageToPrinterReportTicket 接收的参数的数据表并将其发送到客户端。

如果有人知道如何纠正错误或提供帮助,我们将不胜感激。

问候

最佳答案

the SelectCommand.Connection property has not been initialized

在使用该命令之前,需要设置MySqlCommand.Connection 属性。异常(exception)情况是告诉您尚未设置。

您正在使用设置它的构造函数:

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

逻辑推论是conexion.con == null

我们看到 con 是在 conectar 中设置的。但是,该代码周围有一个 try/catch block 。因此,在分配 con 之前一定会引发(并忽略)异常。

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

建议:

  1. 不要捕获和忽略异常;它们通常表明需要正确处理的实际问题。
  2. session 状态似乎是一个非常奇怪的存储数据库凭据的地方;考虑使用 web.config 设置。 (或者您可能希望首先对它们进行硬编码,看看是否可以使其余代码正常工作,然后在确定其他所有内容都正确后将它们移至设置。)

关于c# - SelectCommand.Connection 属性尚未初始化。数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997300/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com