【问题标题】:query with variables c#使用变量c#查询
【发布时间】:2016-06-13 10:41:48
【问题描述】:

我的表单加载函数中有 int ID,并且在加载时我希望 datagridview 填充 someColumn 像 '%?@ID%' 的数据,但是当我这样写它时它不起作用。向我解释需要如何完成。

这里是加载代码:

    private void PopisnaLista_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'dataSet1.ROBA' table. You can move, or remove it, as needed.
        this.rOBATableAdapter.Fill(this.dataSet1.ROBA);
        try
        {
            this.rOBATableAdapter.FillBy(this.dataSet1.ROBA);
        }
        catch (System.Exception ex)
        {
            System.Windows.Forms.MessageBox.Show(ex.Message);
        }
    }

这是对 FillBy 的查询

SELECT        ROBAID, KATBR, KATBRPRO, NAZIV, VRSTA, AKTIVNA, GRUPAID, PODGRUPA, PROID, JM, TARIFAID, NABAVNACENA, PRODAJNACENA, DEVNABCENA, FABRCENA, STANJE, NARUCENO, REZERVISANO, 
                         STANJEPOOTP, TAKSA, MARZA, UVOZ, TARBROJ, AKCIZA, NAZIVZACARINU, NAZIVNAENG, GARANTID, ALTJM, ALTKOL, ALTNEDELJIVA, TRPAK, TRKOL, JMSD, KOMENTAR, XOD, XDO, YOD, YDO, ZOD, ZDO, 
                         IMAROKTRAJANJA, NACENOVNIKU, ZAPID, NORMA, KALO, TEZINA, PIN, KRITZAL, OPTZAL, KATEGORIJA, IMASBROJ, STANJEPOSER, ZAPREMINA, SLIKA, PPID, TRDECPAK, PRODCENABP, JMR, 
                         STANJEPOREKLAM, STANJEPOREVERSU, ADR, STANJE_MOJE_EKSP, VPCID, PROCPC, DATUM_ISPORUKE, REZERVISANO_MOJE_EKSP, STANJEPOOTP_MOJE_EKSP, STANJEPOSER_MOJE_EKSP, 
                         NAZIVZASTAMPU, ALTPIN, TRPIN, DRZAVAID, LINKED_ROBAID, OBLIK, REKLAM_PROC, JM_POVRSINA, JM_ZAPREMINA, X3, Y3, Z3, NAS_BARKOD
FROM            ROBA
WHERE        (KATBRPRO LIKE '%?@ID')

【问题讨论】:

  • @ID 是一个字符串。把它写成'%?'+@ID+'''
  • 您确定要使用Like 作为ID 吗?如果您使用的 ID 用于识别一行而不是 ID 中包含 1 的所有行
  • 动态 SQL 错误 - 不支持表达式计算。

标签: c# sql datagridview


【解决方案1】:

我已经解决了。

首先写(KATBRPRO LIKE @ID),然后FillBy将接受2个参数(数据集,查询中的变量(@ID)),但因为我的id是数字,我需要%?在它前面我只是在参数中添加并加入到 ID 所以代码如下所示:

        try
        {
            this.rOBATableAdapter.FillBy(this.dataSet1.ROBA, "%?" + ID.ToString());
        }
        catch (System.Exception ex)
        {
            System.Windows.Forms.MessageBox.Show(ex.Message);
        }

并查询

SELECT        ROBAID, KATBR, KATBRPRO, NAZIV, VRSTA, AKTIVNA, GRUPAID, PODGRUPA, PROID, JM, TARIFAID, NABAVNACENA, PRODAJNACENA, DEVNABCENA, FABRCENA, STANJE, NARUCENO, REZERVISANO, 
                         STANJEPOOTP, TAKSA, MARZA, UVOZ, TARBROJ, AKCIZA, NAZIVZACARINU, NAZIVNAENG, GARANTID, ALTJM, ALTKOL, ALTNEDELJIVA, TRPAK, TRKOL, JMSD, KOMENTAR, XOD, XDO, YOD, YDO, ZOD, ZDO, 
                         IMAROKTRAJANJA, NACENOVNIKU, ZAPID, NORMA, KALO, TEZINA, PIN, KRITZAL, OPTZAL, KATEGORIJA, IMASBROJ, STANJEPOSER, ZAPREMINA, SLIKA, PPID, TRDECPAK, PRODCENABP, JMR, 
                         STANJEPOREKLAM, STANJEPOREVERSU, ADR, STANJE_MOJE_EKSP, VPCID, PROCPC, DATUM_ISPORUKE, REZERVISANO_MOJE_EKSP, STANJEPOOTP_MOJE_EKSP, STANJEPOSER_MOJE_EKSP, 
                         NAZIVZASTAMPU, ALTPIN, TRPIN, DRZAVAID, LINKED_ROBAID, OBLIK, REKLAM_PROC, JM_POVRSINA, JM_ZAPREMINA, X3, Y3, Z3, NAS_BARKOD
FROM            ROBA
WHERE        (KATBRPRO LIKE  @ID)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    相关资源
    最近更新 更多