我尝试更新某些字段(以前在DataGridView中选择并显示)。由于某种原因,当我试图执行sql update语句(ExecuteNonQuery)时,WinForms应用程序没有响应。我的代码出了什么问题?
private void button19_Click(object sender, EventArgs e)
{
if (ora_dataset.Tables["SWAP_2G_CELLS"].Rows.Count > 0)
{
foreach (DataRow row in ora_dataset.Tables["SWAP_2G_CELLS"].Rows)
{
string swap = row.ItemArray[13].ToString();
string flag = row.ItemArray[14].ToString();
string data = row.ItemArray[15].ToString();
string sql_update = System.IO.File.ReadAllText("SQL/SWAP/swap_2g_update.dat");
sql_update = sql_update.Replace("%SWAP_PARAM%", swap);
sql_update = sql_update.Replace("%FLAG_PARAM%", flag);
sql_update = sql_update.Replace("%DATE_PARAM%", data);
sql_update = sql_update.Replace("%SITE_ID_PARAM%", row.ItemArray[1].ToString());
sql_update = sql_update.Replace("%LAC_PARAM%", row.ItemArray[7].ToString());
OracleCommand cmd = new OracleCommand();
OracleConnection con = new OracleConnection(connstring);
cmd.Connection = con;
//cmd.CommandType = CommandType.Text;
cmd.CommandText = sql_update;
cmd.Connection.Open();
int count = cmd.ExecuteNonQuery();
cmd.Connection.Close();
cmd.Dispose();
}
}
参数替换sql string在我的数据集中的第一行看起来像这样:
UPDATE SWAP_2G
SET
SWAP = 'P'
,FLAG1 = '1'
,DATA_SWAP = TO_DATE('12-02-15 00:00:00', 'dd-mm-yy hh24:mi:ss')
WHERE SITE_ID = '2664' AND LAC LIKE '39002'
我尝试使用Oracle SQL Developer执行它,并且它可以正常工作。