Как включить этот код в программу на C # - PullRequest
0 голосов
/ 04 февраля 2012

У меня проблемы с тем, что моя база данных не открывается, потому что она, очевидно, уже открыта.

Невозможно скопировать файл "j: ... \ KAELC_DB.mdf" в "bin \ Debug \ KAELC_DB.mdf".Процесс не может получить доступ к файлу 'j: ... \ KAELC_DB.mdf', поскольку он используется другим процессом.

Невозможно скопировать файл "j: ... \ KAELC_DB_log.ldf" в "bin".\ Debug \ KAELC_DB_log.ldf».Процесс не может получить доступ к файлу 'j: ... \ KAELC_DB_log.ldf', поскольку он используется другим процессом.

Я нашел ответ на старый вопрос по StackExchange, связанный с этим https://stackoverflow.com/a/3998383, от «Джастина», который пытается решить эту проблему (и я также читал в других местах, что «использование» является одним из наиболее эффективных способов программирования на C #), но как мне использовать это в моем коде?

Я создал небольшой Проект, который ничего не делает, но позволяет мне нажимать кнопку для обработки оператора SQL, но я не совсем понимаю, что означает «Джастин» под «Использовать соединение»... как мне вставить операторы SQL в этот код?!?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace MySqlTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Open SQL File
            using (SqlConnection conn = SqlHelper.GetConn())
            {
                // Use the connection <<< How ?!?!?
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Insert Record Into  SQL File

        }

        private void button3_Click(object sender, EventArgs e)
        {
            //Read Record From SQL File

        }

        private void button4_Click(object sender, EventArgs e)
        {
            //Read All Records From SQL File

        }

        private void button5_Click(object sender, EventArgs e)
        {
            //Delete Record From DQL File
        }

        private void button6_Click(object sender, EventArgs e)
        {
            //Close SQL File
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //Quit
            this.Close();
        }

        class SqlHelper
        {
            public static SqlConnection GetConn()
            {
                SqlConnection returnValue = new SqlConnection(@"Data Source=MEDESKTOP;AttachDbFilename=|DataDirectory|\SqlTestDB.mdf;Initial Catalog=MySqlDB;Integrated Security=True");
                returnValue.Open();
                return returnValue;
            }
        }
    }
}

1 Ответ

1 голос
/ 04 февраля 2012

если все, что вы хотите сделать, это запустить команду SQL, используйте объект SQLCommand. ( Документы MSDN здесь )

вот пример кода из статьи ...

private static void ReadOrderData(string connectionString)
{
    string queryString = 
        "SELECT OrderID, CustomerID FROM dbo.Orders;";
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(
            queryString, connection);
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        try
        {
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}",
                    reader[0], reader[1]));
            }
        }
        finally
        {
            // Always call Close when done reading.
            reader.Close();
        }
    }
}

что стоит отметить:

  1. использует SqlConnection объект с Using блоком
  2. использует SqlCommand объект
  3. использует SqlDataReader объект
  4. явно закрывает SqlConnection с законченным с ним
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...