我现在已经纠结了一个多小时,我开始对自己感觉不好。
我想从SQL表中捕获一个值,将其存储在变量中,然后将其返回到文本框中。
可能的相关信息可能是我试图在组合框事件选择中发生这种情况。继承我的代码:
SqlCommand d = new SqlCommand("select @Name from OCRMonitor where OCRServer = @server", ProdrefConn);
d.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = platform.ToString();
d.Parameters.Add("@Server", SqlDbType.VarChar, 50).Value = server.ToString();
SqlDataReader reader = d.ExecuteReader();
reader.Read();
txtName.Text = reader[0].ToString();
reader.Close();
ProdrefConn.Close();
我有这种变化。但是,这是第一个没有破坏代码的人。但是,它只返回列名的值。它在组合框事件更改(服务器和平台全局)上执行此调用:
ProdrefConn.Open();
if (cbServer.SelectedIndex == 0)
{
server = "Adtukfocr01";
if (rbNuix.Checked == true)
{
platform = "nuixAssigned";
}
else if (rbLeverage.Checked == true)
{
platform = "leverageAssigned";
}
}
答案 0 :(得分:2)
为什么@Name是一个sql参数,它不应该是一个SqlParameter,很明显你是从表中选择一个列值。
SqlCommand d = new SqlCommand("select @Name from OCRMonitor where OCRServer = @server", ProdrefConn);
d.Parameters.Add("@Name", SqlDbType.VarChar, 50).Value = platform.ToString();
d.Parameters.Add("@Server", SqlDbType.VarChar, 50).Value = server.ToString();
将此部分代码更改为
SqlCommand d = new SqlCommand("select Name from OCRMonitor where OCRServer = @server", ProdrefConn);
d.Parameters.Add("Server", SqlDbType.VarChar, 50).Value = server.ToString();
SqlDataReader reader = d.ExecuteReader();
reader.Read();
txtName.Text = reader.GetString(0);
reader.Close();
ProdrefConn.Close();
答案 1 :(得分:0)
ProdrefConn.Open();
if (cbServer.SelectedIndex == 0)
{
server = "Adtukfocr01";
if (rbNuix.Checked == true)
{
Query("nuixAssigned");
}
else if (rbLeverage.Checked == true)
{
Query("leverageAssigned");
}
}
private void Query (string TableName)
{
SqlCommand d = new SqlCommand("select"+TableName+" from OCRMonitor where OCRServer = @server", ProdrefConn);
d.Parameters.Add("@Server", SqlDbType.VarChar, 50).Value = server.ToString();
SqlDataReader reader = d.ExecuteReader();
using (reader)
{
while(reader.Read())
{
txtName.Text = reader[0].ToString();
}
}
ProdrefConn.Close();
}
}