Как взять значение из базы данных? Необходимо объявить скалярную переменную "@ID1"
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
Это дает мне ошибку, говоря, что я должен объявить скалярную переменную @ID
Я ищу везде и не могу найти решение для моего конкретного случая.
Спасибо за помощь людям! ваши решения сработали:D
5 ответов
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
dataCommand.Parameters.AddWithValue("@ID1", ID1); // this is the new line of code
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
Смотри выше, я добавил dataCommand.Parameters.AddWithValue("@ID1", ID1);
, То, что это делает, определяет ваш параметр для вашего запроса SQL и передает ему значение. Я предположил, что вы хотите переменную ID1
быть значением вашего параметра SQL @ID1
,
Вам необходимо передать значение параметра. Добавьте эту строку сразу после инициализации переменной dataCommand:
dataCommand.Parameters.Add("@ID", ID1);
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx
SqlCommand
имеет Parameters
коллекция.
см. также: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx
цитата:
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(commandText, connection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
// Use AddWithValue to assign Demographics.
// SQL Server will implicitly convert strings into XML.
command.Parameters.AddWithValue("@demographics", demoXml);
try
{
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Вам нужно добавить параметр в DataCommand, потому что вы сказали, что есть один.
ID = @ ID1
говорит серверу собрать данные из параметра @ID1. Тогда вы не объявляете параметр.
Проверьте коллекцию Parameters на объекте DataCommand. Добавьте параметр.
Вы должны добавить параметр в SqlCommand.Parameters
коллекция, потому что у вас есть @ID1
в вашем запросе.
сделай это раньше ExecuteScalar
dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));
комплексное решение
public partial class Form3 : Form
{
string var;
int ID1;
private void button1_Click(object sender, EventArgs e)
{
ID1 = int.Parse(textBox1.Text);
SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\asp\Desktop\DatabasesPractice\DatabasesPractice\soccer.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand dataCommand = new SqlCommand("SELECT Name FROM team WHERE ID = @ID1", cn);
dataCommand.Parameters.Add(new SqlParameter("@ID1", ID1));
cn.Open();
var = Convert.ToString(dataCommand.ExecuteScalar());
label3.Text = var;
}
}
надеюсь это поможет