用户代码未处理 SqlException,语法不正确接近'3'



错误图像

大家好,

我有一个错误,用户代码无法处理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");
}
}

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

感谢

感谢@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");
}
}

试试这个;在SQL Server中,数据库标识符的规则规定

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

下划线(_),符号(@)或数字符号(#)。

某个单词开头的某些符号标识符在SQL Server中具有特殊意义。常规标识符以at开头的总是表示局部变量或参数,并且不能用作任何其他类型的对象的名称。以数字符号开头的标识符表示临时表或程序。以双数字符号(##)开头的标识符表示全局临时对象。尽管数字符号或双数字符号字符可用于其他类型的名称的开头对于对象,我们不建议采用这种做法。某些Transact-SQL函数的名称以双引号(@@)开头。避免与这些函数混淆时,不应该使用以与@@。

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

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");
}
}

最新更新