簡體   English   中英

如何將SQL Server數據庫中的數據放入TextBox?

[英]How do I place data from the SQL Server database into a TextBox?

我缺少一些非常簡單的東西。 我有一個包含5個textBox的表單,想用SQL Server數據庫中的數據填充它們。 這是我到目前為止的內容:

當我逐行調試此代碼時,它將返回到connection.open()行的調用塊。

public void Get_Contact_Info()
{
    using (DataAccessClass.sql_Connection)
    {
        string SQL = "SELECT * FROM Customer_Contacts WHERE Contact_ID = @contact_Id";
        SqlCommand sqlCommand = new SqlCommand(SQL, DataAccessClass.sql_Connection);

        sqlCommand.Parameters.AddWithValue("@Contact_Id", contact_Id);
        sqlCommand.Parameters.AddWithValue("@Contact_Direct_Number", contact_Direct_NumberTextBox);
        sqlCommand.Parameters.AddWithValue("@Contact_Cell_Number", contact_Cell_NumberTextBox);
        sqlCommand.Parameters.AddWithValue("@Contact_Email", contact_EmailTextBox);
        sqlCommand.Parameters.AddWithValue("@Contact_Department", contact_DepartmentTextBox);

        DataAccessClass.sql_Connection.Open();

        using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader())
        {
            while (sqlDataReader.Read())
            {
                contact_Id = sqlDataReader["Contact_ID"].ToString();
            }
        DataAccessClass.sql_Connection.Close();
        }
    }
}

我一直在做得很好,可以從用戶那里獲取信息並將其保存到SQL Server DataTable但是我知道我想獲取一些信息以便編輯信息。

任何幫助將不勝感激。

這是我的DataAccessClass

public static class DataAccessClass
    {
        static SqlConnection sqlConnection = new SqlConnection();

        public static SqlConnection sql_Connection
        {
            get { return sqlConnection; }
        }

        public static void OpenConnection()
        {
            string sqlString = Properties.Settings.Default.ConnectionString;
            sqlConnection.ConnectionString = sqlString;
            sqlConnection.Open();
        }

        public static void CloseConnection()
        {
            sqlConnection.Close();
        }
    }

這是我如何調用Get_Contact_Info

    private void Customer_Add_Contact_Form_Load(object sender, EventArgs e)
    {
        this.customer_ContactsBindingSource.AddNew();
        if (contact_Id == null)
        {
            contact_NameTextBox.Select();
        }
        else
        {
            Get_Contact_Info();
        }
    }

我從DataGridView選擇一行,並將customer_ID傳遞給Customer_Add_Contact_Form,以便我可以編輯聯系信息。 這是此步驟的代碼:

DataGridViewRow row = customer_ContactsDataGridView.CurrentCell.OwningRow;
string contact_ID = row.Cells[0].Value.ToString();
string customer_Ship_ID = null;

using (Form Customer_Add_Contact_Form = new Customer_Add_Contact_Form(customer_Ship_ID, contact_ID))

作為討論在這里 ,最好是讓連接池管理的連接,讓您可以簡化您的代碼:

public void Get_Contact_Info()
{
    using (var connection = new SqlConnection(roperties.Settings.Default.ConnectionString))
    {
        connection.Open();

        var SQL = "SELECT * FROM Customer_Contacts WHERE Contact_ID = @contact_Id";

        var sqlCommand = new SqlCommand(SQL, connection);
        sqlCommand.Parameters.AddWithValue("@Contact_Id", contact_Id);

        using (var sqlDataReader = sqlCommand.ExecuteReader())
        {
            while (sqlDataReader.Read())
            {
                contact_Id = sqlDataReader["Contact_ID"].ToString();

                TextBoxName.Text = sqlDataReader["Contact_Name"].ToString();
                //etc ...
            }
        }
    }
}

我刪除了未使用的參數並創建了一個新的連接。 可能是您嘗試使用.Open()打開連接而未使用連接字符串初始化它(它是roperties嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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