使用 RIGHT JOINT 将两个表连接到一个 datagridview
Posted
技术标签:
【中文标题】使用 RIGHT JOINT 将两个表连接到一个 datagridview【英文标题】:Connecting two tables into one datagridview using RIGHT JOINT 【发布时间】:2013-07-15 13:28:49 【问题描述】:我在下面有这段代码,它应该连接 2 个表(ZAJSLUZ 和 KLISLUZ),但我需要添加条件以仅从 ZAJSLUZ 中选择那些 AKCE = zakce.Text 列
有人会改进我的代码吗? 它给我的错误是“=”附近有“错误的语法”
DataTable dt = new DataTable();
//SqlDataAdapter SDA = new SqlDataAdapter("select * from zajsluz",spojeni);
SqlDataAdapter SDA = new SqlDataAdapter("SELECT zajsluz.akce ,zajsluz.text,klisluz.pocet FROM zajsluz RIGHT JOIN klisluz ON zajsluz.ID=klisluz.id WHERE zajsluz.akce="+zakce.Text, spojeni);
SDA.Fill(dt);
dtg_ksluzby.DataSource = dt;
【问题讨论】:
【参考方案1】:检查 zakce.Text 之前是否为有效字符串。
string sZakce = string.Empty;
if(zakce != null && zakce.Text != null)
sZakce = zakce.Text;
string sQuery = string.Format("SELECT zajsluz.akce ,zajsluz.text,klisluz.pocet FROM zajsluz RIGHT JOIN klisluz ON zajsluz.ID=klisluz.id WHERE zajsluz.akce= '0'", sZakce)
SqlDataAdapter SDA = new SqlDataAdapter(sQuery, spojeni);
如果您使用 DataAdapters,我还建议您使用 using block,这样您的适配器会自动处理。
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM table", con))
// use your adapter a
【讨论】:
它现在运行良好,但它没有选择任何东西:-o 即使在列“akce”表中 zajsluz 是 zakce.Text 的值,但在 klsluz 中没有 zakce.Text 的值这可能是问题吗? 在sQuery = ...
行设置断点并检查你的sql 命令,prolly zakce.Text 为空/空。
zakce 包含值“999” 两个表都必须包含该值吗?我只需要从包含在列“AKCE”值“999”(zakce.Text)中的表“ZAJSLUZ”值中进行选择我可能使用了错误的查询?
尝试左连接而不是右连接
运行良好,非常感谢!请问我在哪里做错了? RIGHT JOIN 和 LEFT JOIN 有什么区别?【参考方案2】:
像这样改变你的线路。
SqlDataAdapter SDA = new SqlDataAdapter("SELECT zajsluz.akce ,zajsluz.text,klisluz.pocet FROM zajsluz RIGHT JOIN klisluz ON zajsluz.ID=klisluz.id WHERE zajsluz.akce='"+zakce.Text+"'", spojeni);
【讨论】:
这不起作用,它给了我同样的错误:“bad syntax near=" @BlazenSip zajsluz.akce 是文本字段吗?如果是,请查看我的编辑。我添加了单引号。 我这样做了,但它说:“对象引用未设置为对象的实例” 调试并检查 zakce 或 spojeni 是否为空 它现在运行良好,但它没有选择任何东西:-o 即使在列“akce”表中 zajsluz 是带有 zakce.Text 的值,但在 klsluz 中没有带有 zakce.Text 的值这可能是问题吗?【参考方案3】:...zajsluz.akce=+"zakce.Text,...
你可能想把它改成
...zajsluz.akce='"+zakce.Text+"'",...
【讨论】:
【参考方案4】:将你的线路改为
SqlDataAdapter SDA = new SqlDataAdapter("SELECT zajsluz.akce ,zajsluz.text,klisluz.pocet FROM zajsluz RIGHT JOIN klisluz ON zajsluz.ID=klisluz.id WHERE zajsluz.aakce='" + zakce.Text + "'", spojeni);
【讨论】:
【参考方案5】:SqlDataAdapter SDA = new SqlDataAdapter("SELECT zajsluz.akce ,zajsluz.text,klisluz.pocet FROM zajsluz RIGHT JOIN klisluz ON zajsluz.ID=klisluz.id WHERE zajsluz.akce= '" +zakce.Text +"'", spojeni);
【讨论】:
以上是关于使用 RIGHT JOINT 将两个表连接到一个 datagridview的主要内容,如果未能解决你的问题,请参考以下文章
如何将带有前缀列的表连接到 PHP MySQL 或 Laravel 中的另外两个表