Подтвердить что ты не робот

Как подключиться к базе данных SQL из С#?

Я пытаюсь написать локальную систему управления и установки системы для своей домашней сети, и я думаю, что у меня есть технологии прибиты:

  • С#/. NET/WPF для клиента
  • Lua для поддержки сценариев установки (через LuaInterface)
  • SQL Server Express для поддержки базы данных программ

Однако я не уверен, что конкретно я буду использовать для подключения С# к базе данных. Есть ли что-то встроенное в платформу .NET для этого? Бонусные баллы, если у вас есть предложение о том, что я должен использовать для взаимодействия с указанной базой данных.

4b9b3361

Ответ 1

Отъезд

Я уверен, что там еще много - просто google для "ADO.NET" и "Tutorial"......

UPDATE:

Если вы хотите подключиться к локальному SQL Server Express и подключиться к базе данных "Northwind" и прочитать 5 лучших клиентов из таблицы "Клиенты", вам нужно будет сделать что-то вроде этого:

string connectionString = "server=(local)\SQLExpress;database=Northwind;integrated Security=SSPI;";

using(SqlConnection _con = new SqlConnection(connectionString))
{
   string queryStatement = "SELECT TOP 5 * FROM dbo.Customers ORDER BY CustomerID";

   using(SqlCommand _cmd = new SqlCommand(queryStatement, _con))
   {
      DataTable customerTable = new DataTable("Top5Customers");

      SqlDataAdapter _dap = new SqlDataAdapter(_cmd);

      _con.Open();
      _dap.Fill(customerTable);
      _con.Close();

   }
}

Теперь у вас есть все 5 лучших клиентов из вашей базы данных Northwind в DataTable, и вы можете их проверить, распечатать, манипулировать ими - все, что вы хотите сделать.

Это ADO.NET в действии!

Что касается деталей строки подключения - какие параметры вы можете использовать и как это должно выглядеть, посмотрите Connection Strings веб-сайт - в нем много примеров и объяснений.

Марк

Ответ 2

SqlConnection

Для этого создан объект

.

Например:

SqlConnection conn = new SqlConnection(
    "Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"); 

или

SqlConnection conn = new SqlConnection(
"Data Source=DatabaseServer; Initial Catalog=Northwind; User ID=YourUserID; Password=YourPassword");

conn.Open(); // opens the database connection

Edit:

После выполнения всех ваших действий вы должны закрыть соединение

conn.Close();

Источник данных. Идентифицирует сервер. Может быть локальная машина, имя домена машины или IP-адрес.

Начальный каталог: имя базы данных.

Интегрированная безопасность. Установите для SSPI соединение с пользователем Windows login

Идентификатор пользователя: имя пользователя, настроенного на SQL Server.

Пароль: пароль, соответствующий идентификатору пользователя SQL Server.

Ответ 3

Для подключения к SQL Server Express вам нужно только System.Data, что является стандартной сборкой .NET. Просто используйте классы SqlXXX, и все будет готово.

Тем не менее, запись обычного кода ADO.NET очень скучна, поэтому очень часто используется ORM или менее тяжелый результирующий набор, такой как BLToolkit.

И, наконец, рассмотрим использование SQL Server CE. Это полностью совместимый с ACID однопользовательский встроенный механизм базы данных, который поддерживает практически любую функцию, которую можно ожидать от SQL RDBMS.

Ответ 4

В настоящее время самый простой способ подключения к вашей базе данных и выполнения запросов на С# - LinqToSQL. Это сэкономит вам много головной боли по сравнению с использованием подключений ADO "старой школы".

Ответ 5

Вы можете использовать пространство имен ADO.Net и System.Data.SqlClient для этого же. Я советую вам пойти с инфраструктурой Entities (ORM). Ниже приведены ссылки для Entity Framework, проходящих через

http://thedatafarm.com/LearnEntityFramework/tutorials/creating-an-ado-net-entity-framework-entity-data-model/

http://thedatafarm.com/LearnEntityFramework/tutorials/use-an-entity-framework-entity-as-a-winforms-data-source/

Ответ 6

Я бы рекомендовал использовать Корпорация Microsoft по шаблонам и практике. Вы специально используете Блок приложений доступа к данным.

Выдержка из MSDN:

Блок приложений доступа к данным обеспечивает следующие преимущества:

  • Он использует функциональность, предоставляемую ADO.NET 2.0, и с ней можно используйте функциональность ADO.NET вместе с функциональность блока приложений.
  • Это уменьшает необходимость писать код шаблона для выполнения стандартных задачи.
  • Это помогает поддерживать последовательные методы доступа к данным, как в рамках приложения и на всех предприятиях.
  • Это уменьшает трудности при изменении типа базы данных.
  • Это освобождает разработчиков от изучения различных моделей программирования для разных типов баз данных.
  • Это уменьшает количество кода, которое разработчики должны писать, когда порт приложений к различным типам базы данных.

Я использовал этот метод в течение многих лет, и до сих пор он был очень успешным. Удачи!

Ответ 7

Конечно, вы можете просто использовать классы в System.Data.SqlClient, хотя большинство людей будет использовать ORM. Я использую LLBLGen Pro.

Ответ 8

Я хочу, чтобы это помогло просто попробуйте эти.

@CLASS

using System.Data;
using System.Data.SqlClient;

namespace WindowsFormsApplication2
{
class clsDB
{
    public SqlDataAdapter mDataAdapter = new SqlDataAdapter();
    public DataSet mDataSet = new DataSet();
    public SqlConnection mConn;

    public clsDB()
    {
        mConn = new SqlConnection("Data Source=(the data source);Initial Catalog=sample;User ID=(the id);Password=(the password)");
    }



    public void SQLDB(string strSQL)
    {
        try
        {
            mDataAdapter = new SqlDataAdapter(new SqlCommand(strSQL, mConn));
            mDataSet = new DataSet();
            mDataAdapter.Fill(mDataSet);

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            mConn.Close();
        }

    }

    public void ClearRes()
    {
        mDataAdapter.Dispose();
        mDataAdapter = null;
        mDataSet.Dispose();
        if (mConn.State != ConnectionState.Closed)
        {
            mConn.Close();

        }

    }

}
}

@LOGIN

public partial class Login : Form
{
    clsDB x = new clsDB();

    public Login()
    {
        InitializeComponent();
    }

    private void btnSubmit_Click(object sender, EventArgs e)
    {
            x.SQLDB("select * from tbl_accounts where u_username ='" + txtUser.Text + "' and u_password ='" + txtPass.Text + "'");
            if (x.mDataSet.Tables[0].Rows.Count > 0)
            {
                Main a = new Main();
                this.Hide();
                a.Show();
            }
            else
            {
                MessageBox.Show("wrong username or password");
            }
    }

@MAIN ACCESS

namespace WindowsFormsApplication2
{
public partial class Main : Form
{
    clsDB x = new clsDB();

    public Main()
    {
        InitializeComponent();
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        x.SQLDB("insert into tbl_info (u_lastname, u_firstname, u_middlename) values ('" + atxtLN.Text + "','" + atxtFN.Text + "','" + atxtFN.Text + "')");
        fillgrid();
    }

    private void Main_Load(object sender, EventArgs e)
    {
        x.SQLDB(" select * from tbl_info ");
        dgv1.DataSource = x.mDataSet.Tables[0];
        fillgrid();
    }
    void fillgrid()
    {
        x.SQLDB("select * from tbl_info");
        dgv1.DataSource = null;
        dgv1.DataSource = x.mDataSet.Tables[0];
    }
    void search()
    {
        x.SQLDB("SELECT * from tbl_info where u_id  like '" + etxtID.Text + "%' order by u_id");
        if (x.mDataSet.Tables[0].Rows.Count > 0)
        {
            x.mDataAdapter.Fill(x.mDataSet, "tbl_info");
            dgv1.DataSource = x.mDataSet.Tables["tbl_info"].DefaultView;

            etxtLN.Text = dgv1.Rows[dgv1.CurrentRow.Index].Cells["u_lastname"].Value.ToString();
            etxtFN.Text = dgv1.Rows[dgv1.CurrentRow.Index].Cells["u_firstname"].Value.ToString();
            etxtMN.Text = dgv1.Rows[dgv1.CurrentRow.Index].Cells["u_middlename"].Value.ToString();
        }
        else if (etxtID.Text == "Type User ID to Edit")
        {
            etxtLN.Text = "";
            etxtFN.Text = "";
            etxtMN.Text = "";
        }
        else
        {
            etxtLN.Text = "";
            etxtFN.Text = "";
            etxtMN.Text = "";
        }
    }
    private void etxtID_TextChanged(object sender, EventArgs e)
    {

    }

    private void etxtID_Enter(object sender, EventArgs e)
    {
        etxtID.Text = "";
        etxtID.ForeColor = Color.Black;
    }

    private void etxtID_Leave(object sender, EventArgs e)
    {
        if (etxtID.Text == "")
        {
            etxtID.ForeColor = Color.Gray;
            etxtID.Text = "Type User ID to Edit";

            x.SQLDB(" select * from tbl_info ");
            dgv1.DataSource = x.mDataSet.Tables[0];
            fillgrid();
        }
    }

    private void etxtID_KeyUp(object sender, KeyEventArgs e)
    {
        search();
    }

    private void btnUpdate_Click(object sender, EventArgs e)
    {
        x.SQLDB("UPDATE tbl_info set u_lastname ='" + etxtLN.Text + "', u_firstname ='" + etxtFN.Text + "', u_middlename ='" + etxtMN.Text + "' where u_id =" + etxtID.Text);
        MessageBox.Show("Operation Successful!");
        fillgrid();
    }

    private void btnDelete_Click(object sender, EventArgs e)
    {
        x.SQLDB("delete from tbl_info where u_id =" + dtxtID.Text + "");
        MessageBox.Show("Operation Successful!");
        fillgrid();
    }
}
}