【发布时间】:2021-12-27 08:52:09
【问题描述】:
我正在处理一个小组项目,而其他小组参与者之一编写了一个页面的后端逻辑。我运行了他的代码,令我惊讶的是没有错误,而且数据也没有插入数据库。如果有异常,我尝试使用try-catch 强制排除异常,但没有。有什么想法可能导致这种情况吗?
private async Task Adding_Com(string company_ID, string company_Name, string address, string website, string contact_No, string logo)
{
string Query = "INSERT INTO Company (Comp_ID, CompanyLogo, Comp_TelNum, Comp_Name, Comp_Address, Comp_Website) " +
"VALUES (@ComId, @logo, @con, @ComName, @address, @site)";
await Task.Run(() =>
{
using (var conn = new SqlConnection(connString))
using (var action = new SqlCommand(Query, conn))
{
action.Parameters.Add("@ComId", SqlDbType.VarChar, 25).Value = company_ID;
action.Parameters.Add("@logo", SqlDbType.VarChar, 225).Value = logo;
action.Parameters.Add("@con", SqlDbType.VarChar, 45).Value = contact_No;
action.Parameters.Add("@ComName", SqlDbType.VarChar, 55).Value = company_Name;
action.Parameters.Add("@address", SqlDbType.VarChar, 55).Value = address;
action.Parameters.Add("@site", SqlDbType.VarChar, 55).Value = website;
conn.OpenAsync();
try
{
action.ExecuteNonQueryAsync();
_ = MessageBox.Show("Company Has Been Registered");
}
catch (SqlException ex)
{
_ = MessageBox.Show(ex.Message);
}
}
});
}
SQL 表
CREATE TABLE Company
(
Comp_ID VARCHAR(25) PRIMARY KEY NOT NULL ,
CompanyLogo VARCHAR(255) NOT NULL,
Comp_TelNum VARCHAR(45) NOT NULL,
Comp_Name VARCHAR(55) NOT NULL,
Comp_Address VARCHAR(55) NOT NULL,
Comp_Website VARCHAR(55) NOT NULL
);
【问题讨论】:
-
应该是
await action.ExecuteNonQueryAsync();并且没有理由使用Task.Run -
@ASh 但它已经在
await Task.Run(() =>中,这有什么不同 -
Task.Run 不应该在这里
-
没有看到你评论的最后部分
-
您正在编写异步代码,但不要像@ASh 指出的那样等待其完成。如果没有
await,可能会错过可能延迟的sql命令执行,并且执行期间可能发生的异常也会丢失。