![](/img/trans.png)
[英]Error in server 'executenonquery requires an open and available connection'
[英]SQL Server : “require open and available connection”
我只是學習數據庫來存儲(大量)用戶輸入數據。
我有以下代碼,它檢查記錄並選擇是更新還是創建新記錄
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string sc1 = @"select count(*) from job1 where report = @report";
SqlCommand check = new SqlCommand(sc1, connection);
check.Parameters.AddWithValue("@report", jname);
// check if the report number already exists, if not make a new table otherwise insert
int test = (int)check.ExecuteScalar();
if (test > 0)
{
jobCardExistingTable(connection);
digCardExistingTable(connection);
//insert into existing table code
}
如果我使用jobCardExistingTable
或digCardExisting
表,它們工作正常。 如果我同時使用它們,我會收到錯誤
需要開放和可用的連接
我假設第一個ExecuteNonQuery
(包含在jobCard
和digCard
方法中)正在對連接做一些事情 - 我可以保持這個開放,還是每次調用方法時都必須打開一個新的? 也許我這樣做都是錯的...每個方法都在數據庫中調用一個新表,我應該一次調用它們嗎?
編輯:問題的一部分是jobCardTable(digCardTable是相同的,只是一個不同的查詢)
public void jobCardNewTable(SqlConnection connection)
{
using (connection)
{
string sc3 = "";
sc3 = @"INSERT INTO job1 (" + pv.jobstring + ") VALUES (" + pv.jobparam + ")";
SqlCommand cmd = new SqlCommand(sc3, connection);
queryParams(cmd, 0);
cmd.ExecuteNonQuery();
}
}
編輯:已解決 - 意識到使用{}處理連接。 從方法中取出所有using{}
,並使用單個using{}
來包含所有方法調用並且它可以工作
如果在代碼的其他部分使用相同的連接,則不應using (connection)
。 using
dispose連接並使其無法進一步連接。
所以,你的jobCardNewTable方法實現應該沒有使用語句:
public void jobCardNewTable(SqlConnection connection)
{
string sc3 = "";
sc3 = @"INSERT INTO job1 (" + pv.jobstring + ") VALUES (" + pv.jobparam + ")";
SqlCommand cmd = new SqlCommand(sc3, connection);
queryParams(cmd, 0);
cmd.ExecuteNonQuery();
}
我建議您在需要時創建新連接並進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.