Рейтинг:
7
Garth J Lancaster
Ну, 1-е, посмотрите на эту ужасную, опасную для SQL - пожалуйста, не делай этого - пожалуйста, используйте переутверждаются в SQL
SqlCommand cmd = new SqlCommand(
"select field from table where value = @Value", conn);
SqlParameter param = new SqlParameter();
param.ParameterName = "@Value";
param.Value = *********; // your actual value here
cmd.Parameters.Add(param);
reader = cmd.ExecuteReader();
while(reader.Read())
{
// Do something with the query result here
string colValue = reader["Column/Field Name"].ToString();
}
Во-вторых, вы должны использовать "блок использования" там, где это возможно, и забыть о руководстве
macierzConn.Close();
так :-
using SqlConnection maConn = new SqlConnection("Data Source=xxx;Initial Catalog=xx;User ID=xx;Password=xxx")
{
using SqlCommand cmd = new SqlCommand(
"select field from table where value = @Value", conn);
{
SqlParameter param = new SqlParameter();
param.ParameterName = "@Value";
param.Value = *********; // your actual value here
cmd.Parameters.Add(param);
using SqlDataReader reader = cmd.ExecuteReader()
{
while(reader.Read())
{
// Do something with the query result here
string colValue = reader["Column/Field Name"].ToString();
}
} // Using SqlDataReader
} // Using SqlCommand
} // SqlConnection
Это довольно грубо и требует уборки, но это "более правильный" способ
Вы на самом деле не сказали, что вы имеете в виду под
Цитата:
результаты в одной строке.
может быть, вы используете StringBuilder и добавить в строку, в то время как(читатель.Прочитать() цикл
aksimoN
Я попробовал этот способ, но моя главная проблема заключается в том, что когда я помещаю его в метод и пытаюсь вернуть строку colValue, я получаю :"CS0103 имя 'colValue' не существует в текущем контексте"
string GetModule2(string aplSymbol) //szukanie modułu
{
using SqlConnection maConn = new SqlConnection("Data Source=xxx;Initial Catalog=xx;User ID=xx;Password=xxx");
{
using SqlCommand cmd = new SqlCommand("select field from table where value = @Value", maConn);
{
SqlParameter param = new SqlParameter();
param.ParameterName = "@Value";
param.Value = aplSymbol; // your actual value here
cmd.Parameters.Add(param);
using SqlDataReader reader = cmd.ExecuteReader();
{
while (reader.Read())
{
string colValue = reader["Column/Field Name"].ToString();
}
}
}
}
return colValue;
}
Garth J Lancaster
Я действительно сказал, что это было грубо и требовало немного больше работы, мы не должны делать всю вашу работу за вас ... colValue-это бит, который вам нужно заполнить, так как вы действительно не объяснили "результаты в одной строке".. вы могли бы, например
using SqlCommand cmd = new SqlCommand("select field from table where value = @Value", maConn); {
SqlParameter param = new SqlParameter();
param.ParameterName = "@Value";
param.Value = aplSymbol; // your actual value here
cmd.Parameters.Add(param);
using SqlDataReader reader = cmd.ExecuteReader();
{
StringBuilder colStr = new StringBuilder("");
while (reader.Read())
{
string colValue = reader["Column/Field Name"].ToString();
colStr.Append(colValue);
colStr.Append(",");
}
return colStr.ToString();
}
}
чтобы получить разделенный запятыми список значений в виде строки, а затем удалить последний
return colValue;
показано в основном блоке кода.
Однако это зависит от вас, чтобы адекватно определить проблему и то, что вам нужно
Рейтинг:
1
OriginalGriff
Либо используйте ExecuteReader:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT Age, Description FROM myTable WHERE ID = @ID", con))
{
cmd.Parameters.AddWithValue("@ID", myTextBox.Text);
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
int age = (int) reader["Age"];
string desc = (string) reader["Description"];
Console.WriteLine($"{age}\n{desc}");
}
}
}
}
Или SqlDataAdapter:
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlDataAdapter da = new SqlDataAdapter("SELECT Age, Description FROM myTable WHERE ID = @ID", con))
{
da.SelectCommand.Parameters.AddWithValue("@ID", myTextBox.Text);
DataTable dt = new DataTable();
da.Fill(dt);
myDataGridView.DataSource = dt;
}
}