【发布时间】:2018-11-24 00:01:42
【问题描述】:
我创建了一个函数应用程序,目的是将 blob 存储文本详细信息插入 Azure 数据库 “标题”列在创建,函数调用“BlobTriggerCSharp1”并用c#创建
#r "System.Configuration"
#r "System.Data"
using System.Configuration;
using System.Data.SqlClient;
using System.Threading.Tasks;
using System;
public static void Run(Stream myBlob, string name, TraceWriter log)
{
log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
string detail = ($"{name}");
var str = ConfigurationManager.ConnectionStrings["sqldb_connection"].ConnectionString;
using (SqlConnection conn = new SqlConnection(str))
{
conn.Open();
var text = "INSERT INTO PhotoTable(ID,CreatedAt,UpdatedAt,IsDeleted, Url, Title)VALUES (284,SYSDATETIMEOFFSET(),SYSDATETIMEOFFSET(), 'true', 'yrhrh', {name})";
using (SqlCommand cmd = new SqlCommand(text, conn))
{
// Execute the command and log the # rows affected.
var rows = cmd.ExecuteNonQueryAsync();
log.Info($"{rows} rows were updated");
}
}
}
所以当文本 blob 上传函数触发器但它没有将 blob id 输入到 Azure SQL 数据库中的列(数据库列在查询 ID、CreatedAt、UpdatedAt、IsDeleted、Url、Title 中定义)为它在上面显示我要传递给数据库的参数是“{name}”(因为 Name:{name} 是 blob-storage 中 id 的变量),它是 Blob-storage 的唯一 id(换句话说需要将 {name} 转移到数据库中的 Title 列),我很困惑我错过了什么,不知道我的转移方式是错误的,否则数据类型是错误的,所以很困惑和卡住,帮助将是非常感谢,谢谢
【问题讨论】:
-
我明白你很困惑,但我不明白 1) 你想要的结果是什么 2) 你目前的问题是什么。请进行编辑以使其更清晰。
-
一件事是您的 INSERT 没有像您预期的那样使用字符串插值:
$"INSERT..."。虽然为什么要使用字符串插值?您应该始终参数化查询以避免注入。 -
@Mikhail,谢谢您的回复,1)我的应用程序所做的过程是,当用户输入文本(例如:名称)时,文本会进入 blob 并保存在存储文本 blob,例如名称、任务、工作编号,我的要求是我的应用程序中有一个历史记录页面,用户可以在其中找到他们使用工作编号输入的工作,所以 blob 存储只是存储数据,我想使用与 AzSQL 连接的函数将上传数据存储在表中,并使用另一个函数检索回应用程序以显示历史记录,但我仍然坚持第一部分,将 blob 数据发送到数据库
-
@juunas,感谢您的回复,但我曾经向服务器编写 php 服务,但这个 Azure 概念不同,所以我不知道我必须编写哪些 sql 语句才能进行插入我得到的带有 jason 参数的声明,如果您有任何建议,请告诉我,谢谢,
-
检查@Mikhail 的回答:)
标签: azure azure-sql-database azure-blob-storage azure-functions