簡體   English   中英

如何在 Microsoft Visual Studio 2012 中使用本地數據庫文件添加/編輯/檢索數據

[英]How to add/edit/retrieve data using Local Database file in Microsoft Visual Studio 2012

我想開發使用數據庫的應用程序。 我在基於 Web 的數據庫使用(mysql、pdo、mssql 與 php 和舊式 asp)方面相當有經驗(作為業余愛好者),所以我的 SQL 知識相當不錯。

我已經做過的事情..

  • 創建表單應用程序
  • 添加四個文本框(名字、姓氏、電子郵件、電話)
  • 添加了數據網格控件
  • 使用“Microsoft SQL Server 數據庫文件(SqlClient)”創建數據庫連接
  • 創建了一個表格,其中包含與四個文本框對應的字段。

我現在想要做的是,當單擊一個按鈕時,使用 SQL 插入四個編輯框的內容。 我不想使用任何對我隱藏 SQL 的“包裝器”代碼。 我想盡可能多地利用我在 SQL 方面的經驗。

所以我想我要問的是我現在如何編寫必要的代碼來運行 SQL 查詢以插入該數據。 我顯然不需要知道 SQL 代碼,只需要使用“本地數據庫文件”連接來運行 SQL 查詢的 c# 代碼。

另一個問題可能是 - 是否有比使用“Microsoft SQL Server 數據庫文件”連接類型更好/更簡單的方法(我使用它是因為它看起來是一種無需設置整個sql服務器)

第一個示例是基於我認為它更容易理解的概述,但由於 SQL 注入的漏洞,這不是推薦的方法(更進一步的更好方法)。 不過,我覺得這樣更容易理解。

private void InsertToSql(string wordToInsert)
  {
        string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;

        string queryString = "INSERT INTO table_name (column1) VALUES (" + wordToInsert + ")"; //update as you feel fit of course for insert/update etc

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open()
        SqlDataAdapter adapter = new SqlDataAdapter();
        SqlCommand command = new SqlCommand(queryString, connection);        

        command.ExecuteNonQuery();
        connection.Close();
    }
}

我還建議將它包裝在 try/catch 塊中,以確保連接在出錯時關閉。

我無法對此進行測試,但我認為還可以!

再次不要在實時執行上述操作,因為它允許 SQL 注入 - 請改用參數。 但是,如果您來自 PHP 背景(只是為了適應),則可能會認為執行上述操作會更容易。

這使用參數:

public void Insert(string customerName)
{
try
   {
    string connectionString = Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=myDomain\myUsername;Password=myPassword;

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
    connection.Open();
    connection.Open() SqlCommand command = new SqlCommand( "INSERT INTO Customers (CustomerName" + "VALUES (@Name)", connection);

    command.Parameters.Add("@Name", SqlDbType.NChar, 50, " + customerName +");
    command.ExecuteNonQuery();
    connection.Close();
    }
 catch()
 {
     //Logic in here
 }
 finally()
 {
    if(con.State == ConnectionState.Open)
    {
        connection.Close();
    }
 }

}

然后您只需更改 SQL 字符串以選擇或添加!

下面是使用參數插入數據,我認為這是一種更好的方法:

            var insertSQL = "INSERT INTO yourTable (firstName, lastName, email, phone) VALUES (firstName, lastName, email, phone)";

            string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=userid;Password=pwd;"

            using (var cn = new SqlCeConnection(connectionString))
            using (var cmd = new SqlCeCommand(insertSQL, cn))
            {
                cn.Open();

                cmd.Parameters.Add("firstName", SqlDbType.NVarChar);
                cmd.Parameters.Add("lastName", SqlDbType.NVarChar);
                cmd.Parameters.Add("email", SqlDbType.NVarChar);
                cmd.Parameters.Add("phone", SqlDbType.NVarChar);

                cmd.Parameters["firstName"].Value = firstName;
                cmd.Parameters["lastName"].Value = lastName;
                cmd.Parameters["email"].Value = email;
                cmd.Parameters["phone"].Value = phone;
                cmd.ExecuteNonQuery();

            }

這是從數據庫中選擇數據並填充 datagridview:

            var dt = new DataTable();

            string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; User ID=userid;Password=pwd;"

            using (var cn = new SqlCeConnection(connectionString )
            using (var cmd = new SqlCeCommand("Select * From yourTable", cn))
            {
                cn.Open();

                using (var reader = cmd.ExecuteReader())
                {
                    dt.Load(reader);

                    //resize the DataGridView columns to fit the newly loaded content.
                    yourDataGridView.AutoSize = true;                                       yourDataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);

                    //bind the data to the grid
                    yourDataGridView.DataSource = dt;
                }
            }

暫無
暫無

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

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