【发布时间】:2019-09-12 19:23:44
【问题描述】:
我创建了一个从 API 获取信息的 ConsoleApplication,然后应该将其中一个值放入数据库中的表中。一切正常(例如获取值并用它们填充对象数据),但我似乎无法找到将其推送到数据库的方法。
class Program
{
static void Main(string[] args)
{
HttpClient cons = new HttpClient();
cons.BaseAddress = new Uri("APPURL");
cons.DefaultRequestHeaders.Accept.Clear();
cons.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
MyAPIGet(cons).Wait();
}
static async Task MyAPIGet(HttpClient cons)
{
using (cons)
{
HttpResponseMessage res = await cons.GetAsync("");
res.EnsureSuccessStatusCode();
if (res.IsSuccessStatusCode)
{
VirtualProduct virtualProduct = await res.Content.ReadAsAsync<VirtualProduct>();
Console.WriteLine("\n");
Console.WriteLine("---------------------Calling Get Operation------------------------");
Console.WriteLine("\n");
Console.WriteLine("Id Name ");
Console.WriteLine("-----------------------------------------------------------");
Console.WriteLine("{0}\t{1}\t", virtualProduct.Id, virtualProduct.Header);
Console.ReadLine();
using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString))
{
string insertQuery = @"UPDATE VirtualProduct SET ProductImageId = @Id WHERE Name='@Header';";
var result = db.Execute(insertQuery, virtualProduct);
}
}
}
}
}
运行后,一切正常,但我的数据库没有更新。调试后发现using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString))有如下错误:
ServerVersion = '((System.Data.SqlClient.SqlConnection)db).ServerVersion' 引发了“System.InvalidOperationException”类型的异常
连接字符串非常好,我仔细检查了app.config,看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add connectionString="Server= SERVER.database.windows.net;Database=SERVER_dev;User Id=user; Password=asd;" name="DefaultConnectionString" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
【问题讨论】:
-
发布 full 异常,而不仅仅是它的一部分。您可以使用
Exception.ToString()轻松获取完整的异常,包括调用堆栈。没有IDbConnection.Insert方法,这意味着您正在使用其他库,也许是 Dapper? -
将
db.Open()放在using之后,错误得到修复。但是,尽管如此,数据库仍然没有得到更新。您对我仍然做错什么有任何想法吗? -
@Questieme 我的回答对您有帮助吗?如果它帮助您解决问题,请在下方发表评论。跟踪你在做什么会更容易。另外,
result你的价值是多少?
标签: c# sql-server console-application