如何使用数据集中的结果来执行c#中的select语句
本文关键字:执行 中的 select 语句 结果 数据 何使用 数据集 集中 | 更新日期: 2023-09-27 18:17:20
我的意图是使用Visual studio数据库中的选择语句获得字符串的值,并使用该字符串变量获得另一个选择语句的结果并执行它。
我的意图是做这样的事情,
string qry = "SELECT vehicle_no FROM User_table WHERE username='" + userName + "' ;";
string query = "SELECT longitude,latitude FROM Gps_table WHERE vehicle_no='" + qry + "';";
SqlCommand command = new SqlCommand(qry, dbConnection);
if (reader.HasRows)
{
while (reader.Read())
{
gpsTable.Rows.Add(reader["longitude"], reader["latitude"]);
}
}
reader.Close();
dbConnection.Close();
return gpsTable;
但是我发现这不能做到,我必须使用第一个选择语句的数据集。我怎样才能完成要求的任务?请帮忙!!
Thanks in advance
为什么不这样做(并注意用户名"'; DROP DATABASE * ;"
;)
string query = "SELECT longitude,latitude FROM Gps_table
WHERE vehicle_no
IN
(
SELECT vehicle_no FROM User_table WHERE username='" + userName + "'
)
";
SqlCommand command = new SqlCommand(query, dbConnection);
if (reader.HasRows)
{
while (reader.Read())
{
gpsTable.Rows.Add(reader["longitude"], reader["latitude"]);
}
}
reader.Close();
dbConnection.Close();
return gpsTable;
我的意思是:在你的sql语句中,我可以创建一个名为"';删除数据库*;然后,当您执行查询时,它将删除数据库,因为字符串中的'终止了变量,并且将删除数据库sql语句注入到您的命令中…
试一下
SqlCommand command = Connection.CreateCommand();
command.CommandText = "SELECT G.longitude,G.latitude " +
"FROM Gps_table G Inner Join User_table U ON G.vehicle_no=U.vehicle_no " +
"WHERE U.username=@username;";
command.Parameter.Add("@username", SqlDbType.Varchar).Value = userName;
与DataTable SqlDataAdapter da = new SqlDataAdapter(command)
DataTable dt = New DataTable();
da.Fill(dt);
dgv.DataSource = dt;
与SqlDataReader SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
While (reader.Read())
{
gpsTable.Rows.Add(reader["longitude"], reader["latitude"]);
}
}
reader.Close();