c# - 为什么此 SQL INSERT 失败而没有引发异常?

标签 c# sql-server azure sql-insert

我在 Azure SQL 上的表中插入时遇到问题,该表失败 - 使用 ExecuteNonQuery 命令在受影响的行上返回 -1。

表格如下所示:

URLS Table

代码如下:

private void SaveUrls(ArrayList alUrls)
{
    int rows = 0;
    this.Cursor = Cursors.WaitCursor;

    foreach (string url in alUrls)
    {
        try
        {
            // INSERT INTO URLS (UrlHash,URLPath,DiscoveryDate,IsInProcessingQueue) VALUES('83B2DE6A8247D2F0C1F674DA0DC4E173230C541542D0A4852A8F83AC8A874D43E2A9335B3A505A50DBC735592D792E9A2564FF556EB3286C7F974A0EDE995F46','http://google.com/blog-entry-4835.html', getutcdate(), False)
            // INSERT INTO URLS (UrlHash,URLPath,DiscoveryDate,DiscoveredById,IsInProcessingQueue) VALUES('83B2DE6A8247D2F0C1F674DA0DC4E173230C541542D0A4852A8F83AC8A874D43E2A9335B3A505A50DBC735592D792E9A2564FF556EB3286C7F974A0EDE995F46','http://google.com/blog-entry-4835.html', getutcdate(), 1006, False)
            // INSERT INTO [dbo].[URLS] ([UrlId], [UrlHash], [URLPath], [DiscoveryDate], [DiscoveredById], [ProcessedDate], [ProcessedById], [IsInProcessingQueue], [JoinedProcessingQueueDate]) VALUES (1, N'83B2DE6A8247D2F0C1F674DA0DC4E173230C541542D0A4852A8F83AC8A874D43E2A9335B3A505A50DBC735592D792E9A2564FF556EB3286C7F974A0EDE995F46', N'http://google.com/blog-entry-4835.html', N'2015-03-05 22:44:18', 1006, NULL, NULL, 0, NULL)
            // INSERT INTO URLS ([UrlId], [UrlHash], [URLPath], [DiscoveryDate], [DiscoveredById], [ProcessedDate], [ProcessedById], [IsInProcessingQueue], [JoinedProcessingQueueDate]) VALUES(N'83B2DE6A8247D2F0C1F674DA0DC4E173230C541542D0A4852A8F83AC8A874D43E2A9335B3A505A50DBC735592D792E9A2564FF556EB3286C7F974A0EDE995F46',N'http://google.com/blog-entry-4835.html',N'getutcdate()', 1006, ,,False,)
            // INSERT INTO URLS ([UrlId], [UrlHash], [URLPath], [DiscoveryDate], [DiscoveredById], [ProcessedDate], [ProcessedById], [IsInProcessingQueue], [JoinedProcessingQueueDate]) VALUES(N'83B2DE6A8247D2F0C1F674DA0DC4E173230C541542D0A4852A8F83AC8A874D43E2A9335B3A505A50DBC735592D792E9A2564FF556EB3286C7F974A0EDE995F46',N'http://google.com/blog-entry-4835.html',N'getutcdate()', 1006, '','',False,'')

            SqlCommand command = new SqlCommand("INSERT INTO URLS ([UrlId], [UrlHash], [URLPath], [DiscoveryDate], [DiscoveredById], [ProcessedDate], [ProcessedById], [IsInProcessingQueue], [JoinedProcessingQueueDate]) VALUES(N'" + HashPassword(url) + "',N'" + url + "',N'getutcdate()', 1006, '" + null+ "','" + null + "'," + false + ",'" + null + "')");
            command.CommandType = CommandType.Text;
            command.Connection = con;

            rows += command.ExecuteNonQuery();
        }
        catch (SqlException sqle)
        {
            Log("SQL ERROR: SaveUrls " + sqle.Message);
        }

        Application.DoEvents();
    }

    this.Cursor = Cursors.Default;

    Log("Seeded URLS Table with " + rows.ToString("N0") + " rows");

    alUrls.Clear();           
}

更新:

以下是表格的关联方式:

Diagram

更新2:

  1. 没有产生异常
  2. 即使删除了 UrlId,插入也会失败。

最佳答案

您的 INSERT 语句指定了 UrlId 字段,但您提供的第一个值是哈希值。

INSERT INTO URLS ([UrlId], [UrlHash], [URLPath]...

应该是

INSERT INTO URLS ([UrlHash], [URLPath]...

此外,正如其他人在评论中所说,使用参数而不是构建 SQL 字符串!

关于c# - 为什么此 SQL INSERT 失败而没有引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895987/

相关文章:

c# - Image 上的数据绑定(bind),但我需要一个 byteArray

c# - .NET 的 OCR 库

sql - 从一组数据生成每日记录

用于接收 SOAP 请求的 Azure 选项

azure - 如何使用Azure API管理进行负载平衡?

azure - 是否可以从已部署的 Web 角色获取 web.config?

c# - 为什么样式 TargetType ="Window"在从 App.xaml 设置时不起作用?

c# - 从 C# 调用 Powershell 函数

sql - 创建具有数字范围的临时表

Python - 使用 pyodbc 将 XML 字段从 SQL SERVER 转换为 XML FILE