c# - 调试 C# 中的 VS 与 SQL Server 之间的连接

标签 c# sql-server visual-studio-2013 database-connection

下面是我这几天一直在处理的一段代码:

SqlConnection connectMOBILE = new SqlConnection("Server=OMADB03;Database=MOBILE;Trusted_Connection=True;");
string masterErrorString;

connectMOBILE.Open();

string stringIncorrectPassword = string.Concat(
            "SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTERED",
            "FROM WS_TRANSACTION",
            "WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'");

SqlCommand commandIncorrectPassword = connectMOBILE.CreateCommand();
commandIncorrectPassword.CommandText = stringIncorrectPassword;
SqlDataReader reader = commandIncorrectPassword.ExecuteReader();

while (reader.Read())
     {
         masterErrorString = reader.ToString();
         BOAssistant.WriteLine(masterErrorString);
     }

这段代码使用了一个名为 BOAssistant 的类,它的工作方式类似于 Console.WriteLine,但它会写入日志文件。

这段代码应该做的是从我的查询中收集结果并将它们放在我的日志文件中,但是当我运行这个程序时,我收到以下错误消息:

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near 'SERVICE_ID'.

大约有 20 多行,但这是最突出的一行。这是我第一次编写连接 Visual Studio 和 SQL Server 的程序,所以我想知道代码中是否有问题,或者我的代码中缺少某些东西来建立更牢固的连接?现在代码中的内容是我在互联网上进行的研究的结果。此外,当我在 SQL Server 中运行查询时,它可以正常工作,因此我知道查询语法是正确的。

最佳答案

当您组合字符串时,您会得到不正确的 SQL,因为缺少空格。 string.Concat 为您创建此查询:

SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTEREDFROM WS_TRANSACTIONWHERE SERVICE_ID = 'GETUSERTOKENLOGIN'

显然缺少一些空格。

相反,使用空格更新您的查询:

string stringIncorrectPassword = string.Concat(
        "SELECT SERVICE_ID, RESPONSE_DATA, DATE_ENTERED ",    // added space
        "FROM WS_TRANSACTION ",    // added space
        "WHERE SERVICE_ID = 'GETUSERTOKENLOGIN'");

关于c# - 调试 C# 中的 VS 与 SQL Server 之间的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522174/

相关文章:

sql - 使用 Microsoft SQL Server 获取列的 10 个最高升序值

MysqlCommand ExecuteNonquery返回值始终为0

c# - 包括 Windows 8 手机库中的 UI

c# - 单击菜单“添加项目”时如何根据特定模板添加项目?

C# 如何使用存储在构造函数变量中的类名创建新对象?

sql-server - 获取数据库中所有主键的列表

sql - 分区切换问题

visual-studio-2012 - 编辑 C# 代码时 Visual Studio 2012 Ultimate 速度很慢

c# - .NET Core 中的 Handlebars.NET 未在简单示例中填充数据

c# - 需要在 NamedPipe 或 UDP 之间进行选择