如何在C#程序中包含此代码

时间:2012-02-04 18:31:35

标签: c# sql-server visual-studio-2010

我的数据库无法打开时遇到问题,因为它已经显然已经打开了。

  

无法将文件“j:... \ KAELC_DB.mdf”复制到“bin \ Debug \ KAELC_DB.mdf”。   该进程无法访问文件'j:... \ KAELC_DB.mdf',因为它是   被另一个进程使用。

     

无法将文件“j:... \ KAELC_DB_log.ldf”复制到   “斌\调试\ KAELC_DB_log.ldf”。该进程无法访问该文件   'j:... \ KAELC_DB_log.ldf',因为它正由另一个进程使用。

我在StackExchange上找到了一个旧问题的回复,链接到这里https://stackoverflow.com/a/3998383,由“Justin”,它看起来解决了这个问题(我还在其他地方读过“使用”是其中之一C#中最有效的编程方式,但我如何在我的代码中使用它?

我创建了一个小项目,除了允许我按下一个按钮以处理SQL语句之外什么都不做,但我对“Justin”的意思是“使用连接”感到困惑...怎么做我把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 个答案:

答案 0 :(得分:1)

如果您只想运行SQL命令,请使用SQLCommand对象。 (MSDN docs here

这是文章中的示例代码......

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
  2. Using对象
  3. 使用SqlCommand对象
  4. 使用SqlDataReader对象
  5. 明确关闭SqlConnection并完成了