大家好,
我有这样的错误,即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天了..
由于
答案 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");
}
}