string carid = Request.QueryString["carde"];
var conString = ConfigurationManager.ConnectionStrings["CONSTRING"].ConnectionString;
SqlConnection con = new SqlConnection(conString);
con.Open();
SqlCommand cmd1 = new SqlCommand("SELECT cars.*, img.img FROM cars INNER JOIN img ON cars.carid = img.carid where cars.carid= "+carid+"", con);
SqlDataAdapter sda1 = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
sda1.Fill(dt);
cardetail.DataSource = dt;
cardetail.DataBind();
我无法发现此查询有任何问题。 有人可以帮忙吗?提前谢谢。
答案 0 :(得分:0)
您的内部联接有一个包含另一个carid列名称的表。
如果您想要更加可靠的评估,请包含表格模式。
答案 1 :(得分:0)
我不确定暧昧carid
,但你应该使用如下参数。试试这个,我们会看到其余的。
SqlCommand cmd1 = new SqlCommand(
"SELECT cars.*, img.img" +
"FROM cars, img" +
"WHERE cars.carid = img.carid AND cars.carid = @carid", con);
cmd1.Parameters.AddWithValue("@carid", carid);
答案 2 :(得分:0)
您的通配符*
必须是此处的问题。
SELECT cars.*, img.img FROM cars INNER JOIN...
不是通过通配符从cars
中选择所有内容,而是手动选择它们(这在编码时更好)。在编码时使用SELECT *
是一种不好的做法!
SELECT cars.col1, cars.col2, cars.carid, cars.., img.img FROM cars INNER JOIN...
修改强>
这肯定是我能想到的唯一可能性。但是,您提供了正在使用的数据库系统。我只是在mssql上尝试过,无法重现它。
懒得创建测试表,所以我选择了一些伪表
SELECT a.*, b.a FROM (SELECT 1 a, 2 b, 3 ab UNION SELECT 2, 2, 2) a
LEFT JOIN
(SELECT 1 a, 2 b, 3ab UNION SELECT 2, 2, 2) b
ON a.a = b.a
即使a.*
a
和b
具有相同的列,也不会出现错误。