我只是在学习数据库来存储(大量)用户输入数据。
我有以下代码,它会检查记录并选择是否更新或创建新的
.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
(包含在digCardExisting
和ExecuteNonQuery
方法中)正在对连接做一些事情 - 我能保持这个开放,还是我有每次调用方法时都要打开一个新的?也许我这样做都是错的...每个方法都在数据库中调用一个新表,我应该立即调用它们吗?
编辑:问题的一部分是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();
}
}
来包含所有方法调用并且它可以正常工作
答案 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();
}
我建议您在需要时创建新连接并进行处理。