如何使用数据集中的结果来执行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

如何使用数据集中的结果来执行c#中的select语句

为什么不这样做(并注意用户名"'; 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();