Como é que me ligo a uma base de dados SQL de c#?

Estou a tentar escrever um sistema local de gestão de programas e instalação para a minha rede doméstica, e acho que tenho as tecnologias definidas.
  • C#/. NET / WPF para o cliente
  • Lua para suporte de programação de instalação (através da LuaInterface)
  • SQL Server Express para manter uma base de dados de Programas
No entanto, não sei o que vou usar especificamente para ligar o C# à base de dados. Há alguma coisa incorporada no framework. NET para isto? Bonus pontos se você tiver uma sugestão sobre o que eu devo usar para interagir com essa base de dados.

Author: Andrew Diamond, 2009-08-28

8 answers

Check out

Tenho a certeza que há muito mais por aí, apenas procura no google por "ADO.NET" e "Tutorial"......

Actualização:

Se quiser ligar-se ao seu servidor local SQL Express, e ligar-se à base de dados Northwind, e ler os 5 melhores clientes da tabela "Clientes", terá de fazer alguma coisa. assim:
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();

   }
}
Agora você teria todos os 5 melhores clientes da sua base de dados Northwind na DataTable e você pode inspecioná - los, imprimi-los, manipulá-los-o que quiser fazer. Isso é ... ADO.NET em acção!

Quanto aos detalhes da cadeia de ligação - quais as opções que pode usar e como deve ser, verifique as cadeias de ligação - tem montes de exemplos e explicações.

Marc

 19
Author: marc_s, 2013-11-27 16:23:44

SqlConnection

O objecto é feito para isto.

Eg:

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

Ou

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

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

Editar:

Depois de fazer todas as suas coisas, tem de fechar a ligação até

conn.Close();

Fonte de Dados: identifica o servidor. Pode ser máquina local, nome de domínio de máquina ou endereço IP.

Catálogo inicial: nome da Base de dados.

Segurança Integrada: configurado para SSPI para fazer ligação com as janelas do utilizador autenticação

ID do utilizador : nome do utilizador configurado no servidor SQL.

Senha : senha correspondente ao ID do utilizador do servidor SQL.

 14
Author: rahul, 2009-08-28 09:03:51

Para se ligar ao SQL Server Express você não precisa de nada além de System.Data, que é um conjunto padrão. net. Basta usar as aulas e está feito.

No entanto, escrever mundano ADO.NET o código é muito chato, por isso é muito comum usar um mapeador de resultados ORM ou menos pesado, como BLToolkit.

E finalmente, considere usar o servidor SQL CE. Este é um motor de banco de dados embutido totalmente ACID-compliant, que suporta praticamente qualquer recurso que você pode esperar formulário um SQL RDBMS.

 4
Author: Anton Gogolev, 2009-08-28 07:23:23

Pode usar ADO.Net e sistema.Dado.Espaço de nomes SqlClient para o mesmo. Aconselhá-lo-ei a ir com o Entities framework (ORM). Por favor, Encontre abaixo as ligações para a estrutura de entidades percorrer

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/

 1
Author: MRG, 2009-08-28 07:38:34

Eu recomendaria a utilização da Biblioteca Empresarial [[3]} dos padrões e práticas da Microsoft. Estaria a utilizar especificamente o Bloco da aplicação de acesso aos dados .

Um excerto de MSDN:

O Bloco Da Aplicação De Acesso Aos Dados concede as seguintes prestações:

  • utiliza a funcionalidade fornecida pelo ADO.NET 2.0 e com ele, você pode utilização ADO.NET funcionalidade juntamente com a funcionalidade do bloco de Aplicação.
  • It reduz a necessidade de escrever o código boilerplate para executar o padrão tarefa.
  • Ajuda a manter práticas consistentes de acesso aos dados, tanto no âmbito de uma aplicação e em toda a enterprise. Reduz as dificuldades em Alterar o tipo de base de dados. Isso alivia os desenvolvedores de aprender diferentes modelos de programação para diferentes tipos de bases de dados.
  • reduz a quantidade de código que os programadores devem escrever quando portam aplicações para diferentes tipos de banco.
Há anos que uso este método e tem sido muito bem sucedido até agora. Boa sorte!
 1
Author: Mr. Smith, 2009-08-28 07:49:42

Actualmente, a forma mais fácil de se ligar à sua base de dados e efectuar consultas em C# é LinqToSQL. Vai poupar-lhe muita dor de cabeça em comparação com o uso de conexões ado "Old-school".

 1
Author: Adrian Grigore, 2017-09-13 16:34:54
Claro que podes usar as aulas no sistema.Dado.SqlClient, though most people will use an ORM. Eu uso LLBLGen Pro .
 0
Author: Noon Silk, 2009-08-28 07:20:22
Quem me dera que isto ajudasse. experimenta estes..

@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();
    }
}
}
 0
Author: cloud, 2014-06-24 16:56:05