ADO.net是用来向数据库提交SQL语句的类库。
连接数据库的方式:
1.导入System.Data 和System.Data.SqlClient 命名空间
2.使用using能更好的的进行资源释放
using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=你要连接的数据库名;User ID=你的用户名;Password=你的密码"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "SQL语句 ";
cmd.ExecuteNonQuery();
}
}
3.执行查询: 查询优化,防止SQL注入漏洞
using (SqlConnection conn = new SqlConnection(
"Data Source=.;Initial Catalog=ZhangCheng_Demo;User ID=zhangcheng;Password=zhangcheng"
))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select UserAge from dbo.T_UserInfo where UserName = @UserName"; //防止Sql注入
//增删改查的参数都可进行此设置
//@参数不能用于替换表明、select之类的关键字。 例如:select UserAge from @dbo.T_UserInfo where UserName = @UserName";
cmd.Parameters.Add(new SqlParameter("@UserName",txtName.Text));
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read()) //Read 顺序读取,若为空则返回False
{
string age = reader.GetString(0);
MessageBox.Show(age.ToString());
}
}
}
4.使用DataSet结果集 使用查询结果比较小的时候。查询结果数据量大的话用Reader
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from dbo.T_UserInfo where UserName = @UserName"; //防止Sql注入
//增删改查的参数都可进行此设置
//@参数不能用于替换表明、select之类的关键字。 例如:select UserAge from @dbo.T_UserInfo where UserName = @UserName";
cmd.Parameters.Add(new SqlParameter("@UserName",txtName.Text));
//using (SqlDataReader reader = cmd.ExecuteReader())
//{
// while (reader.Read()) //Read 顺序读取,若为空则返回False
// {
// string age = reader.GetString(0);
// MessageBox.Show(age.ToString());
// }
//}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
DataTable table=dataSet.Tables[0];
DataRowCollection rows = table.Rows;
for (int i = 0; i < rows.Count;i++ )
{
DataRow row=rows[i];
string age=(string)row["UserAge"];
string name=(string)row["UserName"];
MessageBox.Show(age+","+name);
}
}
5.APP.config
将连接数据库字符串放到配置文件中,方便连接时使用。。
6.SqlHelper
将常用的方法放到SqlHelper中,方便使用时调用。例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
namespace WpfApplication_2
{
class SqlHelper
{
private static string connStr=ConfigurationManager.ConnectionStrings["dbConnectStr"].ConnectionString;
public static int ExcuteNonQuery(string sql)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string sql)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteScalar();
}
}
}
}
}
把不变的放到方法里,把变化的放到参数里。