SQL Server:“需要打开和可用的连接”

时间:2017-03-01 04:47:07

标签: c# sql-server

我只是在学习数据库来存储(大量)用户输入数据。

我有以下代码,它会检查记录并选择是否更新或创建新的

.radio-custom input[type="radio"]:checked ~ label:after {
  content: '';
  position: absolute;
  top: 50%;
  left: 10.5px;
  margin-top: -5px;
  display: inline-block;
  font-size: 11px;
  line-height: 1;
  width: 10px;
  height: 10px;
  background-color: #117efd;
  border-radius: 50px;
}

如果我使用<div class="radio-custom"> <input type="radio" name="test" id="test" value="test" /> <span></span> <label>Test</label> </div>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(包含在digCardExistingExecuteNonQuery方法中)正在对连接做一些事情 - 我能保持这个开放,还是我有每次调用方法时都要打开一个新的?也许我这样做都是错的...每个方法都在数据库中调用一个新表,我应该立即调用它们吗?

编辑:问题的一部分是jobCardTable(digCardTable是相同的,只是一个不同的查询)

jobCard

编辑:已解决 - 意识到使用{}处理连接。从方法中取出所有digCard,并使用单个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(); } } 来包含所有方法调用并且它可以正常工作

1 个答案:

答案 0 :(得分:0)

如果您在代码的其他部分使用相同的连接,则不应使用using (connection)using处置连接并使其无法进一步连接。

因此,您的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();

}

我建议您在需要时创建新连接并进行处理。