我正在處理一個小組專案,其他小組參與者之一撰寫了頁面的后端邏輯之一。我運行了他的代碼,令我驚訝的是沒有錯誤,而且資料也沒有插入到資料庫中。try-catch如果有例外,我嘗試使用 a強制排除例外,但沒有。任何可能導致這種情況的想法?
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
);
uj5u.com熱心網友回復:
你的問題是你應該等待OpenAsync和,ExecuteNonQueryAsync因為如果你不這樣做,競爭條件可能會發生,你將看不到任何事情發生。
您的代碼應該類似于:
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;
// We wait to the connection to be opened to make sure we do not work with a closed connection
await conn.OpenAsync();
try
{
// We wait the command to finish before claiming the data was inserted.
await action.ExecuteNonQueryAsync();
_ = MessageBox.Show("Company Has Been Registered");
}
catch (SqlException ex)
{
_ = MessageBox.Show(ex.Message);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357644.html
