Como é que me ligo a uma base de dados SQL de c#?
- 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
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
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.
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.
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.
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
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:
Há anos que uso este método e tem sido muito bem sucedido até agora. Boa sorte!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.
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".
@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();
}
}
}