SqlException未被用户代码处理,在#3;'附近的语法不正确

时间:2016-06-10 09:15:05

标签: sqlexception

Error image

大家好,

我有这样的错误,即sqlException未被用户代码处理,3附近的语法不正确。

下面是我的代码。

private void get3GSiteID()
    {
        string name3G = "";

        DataTable dtSite = new DataTable();            

        sqlStr = " SELECT ";
        sqlStr += " SNumb ";
        sqlStr += " FROM ";
        sqlStr += " 3G.DBO.W_Site AS W_SITE";
        sqlStr += " WHERE ";
        sqlStr += " W_SITE.Address = '" + siteAddress + "'";            
        SqlDataAdapter daSite = new SqlDataAdapter(sqlStr, tGConnection3G);
        dtSite.Clear();
        daSite.Fill(dtSite);
        if (dtSite.Rows.Count > 0)
        {
            name3G = dtSite.Rows[0]["SNumb"].ToString();
            siteIDCheckBox.Add(name3G);
            bssNetworkList.Add("3G");
        }
    }

请帮忙。 我已经被困在这里2天了..

由于

2 个答案:

答案 0 :(得分:1)

感谢@Dave,我设法解决了问题,它不是[3G.DBO.W_Site],而是[3G] .DBO.W_Site

private void get3GSiteID()
{
    string name3G = "";

    DataTable dtSite = new DataTable();            

    sqlStr = " SELECT ";
    sqlStr += " SNumb ";
    sqlStr += " FROM ";
    sqlStr += " **[3G]**.DBO.W_Site AS W_SITE";
    sqlStr += " WHERE ";
    sqlStr += " W_SITE.Address = '" + siteAddress + "'";            
    SqlDataAdapter daSite = new SqlDataAdapter(sqlStr, tGConnection3G);
    dtSite.Clear();
    daSite.Fill(dtSite);
    if (dtSite.Rows.Count > 0)
    {
        name3G = dtSite.Rows[0]["SNumb"].ToString();
        siteIDCheckBox.Add(name3G);
        bssNetworkList.Add("3G");
    }
}

答案 1 :(得分:0)

试试这个;在SQL Server中rules for database identifiers state

  

第一个字符必须是以下之一:定义的字母   通过Unicode标准3.2。字母的Unicode定义   包括从a到z,从A到Z的拉丁字符,以及   来自其他语言的字母。

     

下划线(_),在标志处   (@)或数字符号(#)。

     

开头的某些符号   标识符在SQL Server中具有特殊含义。常规标识符   以at符号开头总是表示局部变量或   参数并不能用作任何其他类型对象的名称。   以数字符号开头的标识符表示临时表   或程序。以双号标记开头的标识符(##)   表示全局临时对象。虽然数字符号或双倍   数字符号字符可用于开始其他类型的名称   对象,我们不建议这种做法。一些Transact-SQL   函数的名称以符号(@@)的double开头。避免   与这些功能混淆,你不应该使用启动的名称   与@@。

由于您正在尝试查询数据库,可能它已经存在,这意味着要进入它,您需要用双引号或方括号分隔名称。

private void get3GSiteID()
    {
        string name3G = "";

        DataTable dtSite = new DataTable();            

        sqlStr = " SELECT ";
        sqlStr += " SNumb ";
        sqlStr += " FROM ";
        sqlStr += " [3G.DBO.W_Site] AS W_SITE";
        sqlStr += " WHERE ";
        sqlStr += " W_SITE.Address = '" + siteAddress + "'";            
        SqlDataAdapter daSite = new SqlDataAdapter(sqlStr, tGConnection3G);
        dtSite.Clear();
        daSite.Fill(dtSite);
        if (dtSite.Rows.Count > 0)
        {
            name3G = dtSite.Rows[0]["SNumb"].ToString();
            siteIDCheckBox.Add(name3G);
            bssNetworkList.Add("3G");
        }
    }