![](/img/trans.png)
[英]ExecuteNonQuery, ExecuteReader and SqlDataAdapter insert query 3 times
[英]Programming Practice: Using ExecuteNonQuery with SqlDataAdapter
public DataTable UserUpdateTempSettings(int install_id, int install_map_id, string Setting_value,string LogFile)
{
SqlConnection oConnection = new SqlConnection(sConnectionString);
DataSet oDataset = new DataSet();
DataTable oDatatable = new DataTable();
SqlDataAdapter MyDataAdapter = new SqlDataAdapter();
try
{
oConnection.Open();
cmd = new SqlCommand("SP_HOTDOC_PRINTTEMPLATE_PERMISSION", oConnection);
cmd.Parameters.Add(new SqlParameter ("@INSTALL_ID", install_id));
cmd.Parameters.Add(new SqlParameter ("@INSTALL_MAP_ID", install_map_id));
cmd.Parameters.Add(new SqlParameter("@SETTING_VALUE", Setting_value));
if (LogFile != "")
{
cmd.Parameters.Add(new SqlParameter("@LOGFILE",LogFile));
}
cmd.CommandType = CommandType.StoredProcedure;
MyDataAdapter.SelectCommand = cmd;
cmd.ExecuteNonQuery();
MyDataAdapter.Fill(oDataset);
oDatatable = oDataset.Tables[0];
return oDatatable;
}
catch (Exception ex)
{
Utils.ShowError(ex.Message);
return oDatatable;
}
finally
{
if ((oConnection.State != ConnectionState.Closed) || (oConnection.State != ConnectionState.Broken))
{
oConnection.Close();
}
oDataset = null;
oDatatable = null;
oConnection.Dispose();
oConnection = null;
}
}
我已經在上面使用了ExecuteNonQuery
。 通常,它不與SqlDataAdapter
。 如果我不使用它,則會出現錯誤。
將ExecuteNonQuery
與SqlDataAdapter
一起使用是否是不好的編程習慣?
嗨,您好,您不必調用executeNonQuery,因為dataadapter的fill方法會為您服務。 這是一個小樣本:
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace WindowsFormsApplication9
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
FillData();
}
void FillData()
{
// 1
// Open connection
using (SqlConnection c = new SqlConnection(
Properties.Settings.Default.DataConnectionString))
// 2
// Create new DataAdapter
using (SqlDataAdapter a = new SqlDataAdapter("SELECT * FROM EmployeeIDs", c))
{
// 3
// Use DataAdapter to fill DataTable
DataTable t = new DataTable();
a.Fill(t);
// 4
// Render data onto the screen
// dataGridView1.DataSource = t; // <-- From your designer
}
}
}
}
我認為這不是壞習慣,在這種情況下這樣做沒有任何意義。 fill方法用於填充select命令的結果。 ExecuteNonQuery()通常在不檢索數據時使用,只會返回結果數。
您可以在此處找到有關填充方法的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.