请教个问题,我想实现,在导入模板后,一点保存按钮能保存住我导入的数据,其中这个保存的代码如下,前六项若与导入模板的前六项若与数据表的数据相同,则返回,若都不同,就新插入,代码和表单如下,但导入后都保存不住,不知哪里有问题,请各位给看看吧,谢谢;
private void btnsave_Click(object sender, EventArgs e)
{
conn = new SqlConnection("server=192.168.100.247;database=Whmesinfo;user=sa;password=whyy@2021");
conn.Open();
SqlString = "select * from w_Qctable1 where productname like '%" + textBox3.Text + "%' and batchNo like '%" + textBox1.Text + "%' and [date] >= '" + dateTimePicker1.Value.ToString("yyyy-MM-dd HH:mm:ss") + "'and [date] <= '" + dateTimePicker2.Value.ToString("yyyy-MM-dd HH:mm:ss") + "' order by date asc ";
//加载数据并显示
try
{
//加载数据并显示
//查询条件和SqlConnection连接
SqlCommand cmd = new SqlCommand(SqlString, conn);
//数据适配器
SqlDataAdapter sda = new SqlDataAdapter(cmd);
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataTable dtTemp = dtTempImport; //导入的模板
//sda.Fill(dtTemp);//把数据适配器中的数据读到数据集中的一个临时表中
sda.Fill(dt);//把数据适配器中的数据读到数据集中的一个表中
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
if (i == 0)
continue;
//bool isSame = false;
for (int j = 0; j < dt.Rows.Count; j++)
{
//请根据需要更改此处的条件,以便进行正确的比较
if (dtTemp.Rows[i]["F1"].ToString() == dt.Rows[j]["date"].ToString() &&
dtTemp.Rows[i]["F2"].ToString() == dt.Rows[j]["productcode"].ToString() &&
dtTemp.Rows[i]["F3"].ToString() == dt.Rows[j]["productname"].ToString() &&
dtTemp.Rows[i]["F4"].ToString() == dt.Rows[j]["batchNo"].ToString() &&
dtTemp.Rows[i]["F5"].ToString() == dt.Rows[j]["reportNo"].ToString() &&
dtTemp.Rows[i]["F6"].ToString() == dt.Rows[j]["process"].ToString()
)
{
break;
}
if (dtTemp.Rows[i]["F1"].ToString() != dt.Rows[j]["date"].ToString() &&
dtTemp.Rows[i]["F2"].ToString() != dt.Rows[j]["productcode"].ToString() &&
dtTemp.Rows[i]["F3"].ToString() != dt.Rows[j]["productname"].ToString() &&
dtTemp.Rows[i]["F4"].ToString() != dt.Rows[j]["batchNo"].ToString() &&
dtTemp.Rows[i]["F5"].ToString() != dt.Rows[j]["reportNo"].ToString() &&
dtTemp.Rows[i]["F6"].ToString() != dt.Rows[j]["process"].ToString()
)
{
string strsql = @"INSERT INTO [dbo].[w_Qctable1]
([date],[productcode],[productname],[batchNo],[reportNo],[process],[mstr],[DT],[gl],[ph],[rd],[meoh],[PE],[result],[note],[id])
values
(@date,@productcode, @productname, @batchNo, @reportNo, @process, @mstr, @DT, @gl, @ph, @rd, @meoh, @PE, @result, @note, @id)";
SqlCommand comm = new SqlCommand(strsql, conn);
comm.Parameters.AddWithValue("@date", dtTemp.Rows[i]["F1"]);
comm.Parameters.AddWithValue("@productcode", dtTemp.Rows[i]["F2"]);
comm.Parameters.AddWithValue("@productname", dtTemp.Rows[i]["F3"]);
comm.Parameters.AddWithValue("@batchNo", dtTemp.Rows[i]["F4"]);
comm.Parameters.AddWithValue("@reportNo", dtTemp.Rows[i]["F5"]);
comm.Parameters.AddWithValue("@process", dtTemp.Rows[i]["F6"]);
comm.Parameters.AddWithValue("@mstr", dtTemp.Rows[i]["F7"]);
comm.Parameters.AddWithValue("@DT", dtTemp.Rows[i]["F8"]);
comm.Parameters.AddWithValue("@gl", dtTemp.Rows[i]["F9"]);
comm.Parameters.AddWithValue("@ph", dtTemp.Rows[i]["F10"]);
comm.Parameters.AddWithValue("@rd", dtTemp.Rows[i]["F11"]);
comm.Parameters.AddWithValue("@meoh", dtTemp.Rows[i]["F12"]);
comm.Parameters.AddWithValue("@PE", dtTemp.Rows[i]["F13"]);
comm.Parameters.AddWithValue("@result", dtTemp.Rows[i]["F14"]);
comm.Parameters.AddWithValue("@note", dtTemp.Rows[i]["F15"]);
comm.Parameters.AddWithValue("@id", Guid.NewGuid().ToString());
comm.ExecuteNonQuery();
}
}
}
MessageBox.Show("更新成功");
}
catch (Exception ex)
{
MessageBox.Show("error:"+ex.Message);
}
finally
{
conn.Close();
}
}
你断点看过,dtTempImport 里面有数据吗
前提:为数据库连接建立一个缓冲池。
1:从连接池获取或创建可用连接
2:使用完毕之后,把连接返回给连接池
3:在系统关闭前,断开所有连接并释放连接占用的系统资源
4:能够处理无效连接,限制连接池中的连接总数不低于或者不超过某个限定值