我的目的是使用Visual Studio数据库中的select语句获取字符串的值,并使用该字符串变量获取另一个select语句的结果并执行它。
我打算做这样的事情,
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;
但我发现这不可能完成,我必须使用数据集作为第一个选择语句。我怎样才能完成所需的任务。请帮助!!!
提前致谢
答案 0 :(得分:0)
为什么不只是这个(和心灵用户名"'; 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语句中,我可以创建一个名称为"'; DROP DATABASE *;"。
然后,当您执行查询时,它将删除数据库,因为'在字符串中终止变量,并将drop database sql语句注入到命令...
答案 1 :(得分:0)
试试这个
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();