簡體   English   中英

編程實踐:將ExecuteNonQuery與SqlDataAdapter一起使用

[英]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 如果我不使用它,則會出現錯誤。

ExecuteNonQuerySqlDataAdapter一起使用是否是不好的編程習慣?

嗨,您好,您不必調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM