ADO.NET技术,该技术用于.net程序操作数据库
ADO的组成:
1.数据提供程序
a.Connection:连接对象,用于指定数据库服务器的相关信息(数据库服务名 数据库用户名 密码等)
b.Command:命令对象,用于对数据库执行增删改查的操作,会提供对应的操作方法
2.数据集
对数据库的操作:
1.导名称空间System.Data.SqlClient (用于连接Sql server数据库)
2.创建连接对象
//连接字符串的格式: server=数据库服务名;database=数据库;uid=用户名;pwd=密码
String conStr = "server=192.168.0.102;database=MySchool3;uid=sa;pwd=sa";
SqlConnection cn = new SqlConnection(conStr);
3.打开连接
cn.open();
4.创建命令对象
String sql = "delete student where studentId="+this.textBox1.Text;
SqlCommand cmd = new SqlCommand(sql,con);
5.执行命令对象
int count=cmd.ExecuteNonQuery();//该方法的返回值:sql语句执行后 受影响的行数
ExecuteNonQuery方法用于执行增删改
6.关闭连接对象
cn.close();
DBbase
//读取配置文件,连接数据库语句 public static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ConnectionString; //实例化连接对象 con SqlConnection con = new SqlConnection(strCon); //检测连接是否打开 public void Connection() { if (this.con.State == ConnectionState.Closed) { this.con.Open(); } } //根据提供的strSQL语句 访问数据库,返回List集合 public List<User> GetDataSet(string strSQL) { Connection(); try { SqlDataAdapter da = new SqlDataAdapter(strSQL, con); DataSet ds = new DataSet(); da.Fill(ds); List<User> list = new List<User>(); if (ds.Tables.Count > 0) { for (int i = 0; i < ds.Tables.Count; i++) { foreach (DataRow dr in ds.Tables[i].Rows) { User obj = new User(); if (ds.Tables[i].Columns.Contains("UserID")) obj.UserID = Convert.ToString(dr["UserID"]); if (ds.Tables[i].Columns.Contains("UserName")) obj.UserName = Convert.ToString(dr["UserName"]); if (ds.Tables[i].Columns.Contains("UserSet")) obj.UserSet = Convert.ToString(dr["UserSet"]); if (ds.Tables[i].Columns.Contains("Userphone")) obj.Userphone = Convert.ToString(dr["Userphone"]); if (ds.Tables[i].Columns.Contains("UserworkType")) obj.UserworkType = Convert.ToString(dr["UserworkType"]); if (ds.Tables[i].Columns.Contains("WorkDetailsSituation")) obj.WorkDetailsSituation = Convert.ToString(dr["WorkDetailsSituation"]); if (ds.Tables[i].Columns.Contains("UserleverlType")) obj.UserleverlType = Convert.ToString(dr["UserleverlType"]); if (ds.Tables[i].Columns.Contains("UserType")) obj.UserType = Convert.ToString(dr["UserType"]); if (ds.Tables[i].Columns.Contains("UserCreationtime")) obj.UserCreationtime = Convert.ToDateTime(dr["UserCreationtime"]); if (ds.Tables[i].Columns.Contains("Userhobby")) obj.Userhobby = Convert.ToString(dr["Userhobby"]); list.Add(obj); } } } return list; } catch (Exception) { throw; } }
Helper
public class Helper { //通用的查询方法,返回查询的结果集 public static DataSet getDataSet(string sql) { //创建连接对象 string constr = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ToString(); //创建命令对象 SqlConnection cn = new SqlConnection(constr); cn.Open(); //适配器 SqlDataAdapter da = new SqlDataAdapter(sql, cn); DataSet ds = new DataSet();//没有数据 //调用da.fill方法对ds进行数据填充 da.Fill(ds); //关闭连接 cn.Close(); return ds; } //通用的增删改方法 public static int executeQuery(string sql) { //创建连接对象 string constr = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ToString(); SqlConnection cn = new SqlConnection(constr); cn.Open(); //创建命令对象 SqlCommand cmd = new SqlCommand(sql, cn); //执行命令 int count = cmd.ExecuteNonQuery(); cn.Close(); return count; } }
SqlHelper
/// <summary> /// 数据库操作通用类 /// 达到了sql防注入,并且,将对数据库的操作独立开来,可以提高内聚,降低耦合。达到了哪里使用,哪里关闭的效果,避免隐患。 /// </summary> public class SqlHelper { SqlConnection conn = null; SqlCommand com = null; SqlDataReader rd = null; string constr = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ToString(); /// <summary> /// 打开数据库连接 /// </summary> /// <returns></returns> public bool ConnectSql() { try { conn = new SqlConnection(constr); conn.Open(); return true; } catch { return false; } } /// <summary> /// 关闭数据库连接 /// </summary> public void closeConn() { try { if (conn != null) { conn.Close(); } if (rd != null) { rd.Close(); } } catch { return; } } /// <summary> /// 数据增删改 /// </summary> /// <param name="sql">sql语句</param> /// <param name="dic">数据集合对象</param> /// <returns></returns> public static bool SqlPour(string sql, Dictionary<string, string> dic) { try { ConnectSql(); com = new SqlCommand(sql, conn); if (dic != null) { foreach (var item in dic) { com.Parameters.AddWithValue(item.Key, item.Value); } } com.ExecuteNonQuery(); return true; } catch (Exception e) { Console.WriteLine(e.Message); return false; } finally { closeConn(); } } /// <summary> /// 查询数据返回ArrayList /// </summary> /// <param name="sql">sql语句</param> /// <param name="dic">数据集合对象</param> /// <returns></returns> public static ArrayList SelectInfo(string sql, Dictionary<string, string> dic) { try { ConnectSql(); com = new SqlCommand(sql, conn); ArrayList al = new ArrayList(); if (dic != null) { foreach (var item in dic) { //遍历参数并进行赋值,防止sql注入 com.Parameters.AddWithValue(item.Key, item.Value); } } rd = com.ExecuteReader(); int clumn = 0; //得到数据的列数 if (rd.Read()) { clumn = rd.FieldCount; } else { return null; } do { //读取每行每列的数据并放入Object数组中 Object[] obj = new object[clumn]; for (int i = 0; i < clumn; i++) { obj[i] = rd[i]; } al.Add(obj); //将一行数据放入数组中 } while (rd.Read()); return al; } catch { return null; } finally { closeConn(); } } }
SqlDBbase
public class SqlDBbase { /// <summary> /// 数据连接方法 /// </summary> /// <returns></returns> public static SqlConnection Connection() { //读取配置文件,连接数据库语句 string connStr = ConfigurationManager.ConnectionStrings["Family"].ConnectionString; //实例化连接对象 con SqlConnection conn = new SqlConnection(connStr); //返回对象 return conn; } /// <summary> /// 根据sql赋值到Dictionary集合 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static Dictionary<string, object> select(string sql) { SqlConnection conn = Connection(); SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable(); da.Fill(dt); if (dt.Rows.Count == 0) { return null; } DataRow row = dt.Rows[0]; Dictionary<string, object> dic = new Dictionary<string, object>(); foreach (DataColumn item in dt.Columns) { dic.Add(item.ColumnName, row[item.ColumnName]); } return dic; } /// <summary> /// 查询多条数据 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static DataTable Selects(string sql) { try { SqlConnection conn = Connection(); SqlCommand com = new SqlCommand(); com.Connection = conn; com.CommandText = sql; SqlDataAdapter da = new SqlDataAdapter(com); DataSet ds = new DataSet(); da.Fill(ds); return ds.Tables[0]; } catch (Exception ex) { throw ex; } } /// <summary> /// 执行一条SQL语句,增删改都可以用 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static int ExecutionSQl(string sql) { SqlConnection conn = Connection(); try { SqlCommand com = new SqlCommand(sql, conn); return com.ExecuteNonQuery(); } catch (Exception ex) { Console.Write(ex.Message); return -1; } finally { conn.Close(); } } /// <summary> /// 保存修改带参数可用此方法 /// </summary> /// <param name="sql">sql语句</param> /// <param name="sqlparameter">参数</param> /// <returns></returns> public static int ExecutionPar(string sql, SqlParameter[] sqlparameter) { SqlConnection conn = Connection(); SqlCommand com = null; try { com = new SqlCommand(); com.Connection = conn; com.CommandText = sql; return com.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine(ex.Message); return -1; } finally{ com.Parameters.Clear(); conn.Close(); } } }
DBHelper
public class DBHelper { //读取配置文件,连接数据库语句 public static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ConnectionString; /// <summary> /// 查询数据 /// </summary> /// <param name="sqlStr">查询语句</param> /// <param name="parameter">参数</param> /// <returns></returns> public static DataTable QueryData(string sqlStr, params SqlParameter[] parameter) { try { //实例化连接对象 conn using (SqlConnection conn = new SqlConnection(strCon)) { conn.Open(); SqlCommand cmd = new SqlCommand(sqlStr, conn); DataSet dt = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(); cmd.Parameters.AddRange(parameter); adapter.SelectCommand = cmd; adapter.Fill(dt); conn.Close(); return dt.Tables[0]; } } catch (Exception ex) { throw new ApplicationException("查询数据异常" + ex.Message); } } /// <summary> /// 添加数据 /// </summary> /// <param name="sqlStr">添加语句</param> /// <param name="parameter">参数</param> /// <returns></returns> public static bool AddData(string sqlStr, params SqlParameter[] parameter) { try { using (SqlConnection conn = new SqlConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sqlStr, conn); cmd.Parameters.AddRange(parameter); var row = cmd.ExecuteNonQuery(); conn.Close(); if (row > 0) { return true; } return false; } } catch (Exception ex) { throw new ApplicationException("添加数据异常" + ex.Message); } } /// <summary> /// 更新数据 /// </summary> /// <param name="sqlStr">更新语句</param> /// <param name="parameter">参数</param> /// <returns></returns> public static bool UpdateData(string sqlStr, params SqlParameter[] parameter) { try { using (SqlConnection conn = new SqlConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sqlStr, conn); cmd.Parameters.AddRange(parameter); var row = cmd.ExecuteNonQuery(); conn.Close(); if (row > 0) { return true; } return false; } } catch (Exception ex) { throw new ApplicationException("更新数据异常" + ex.Message); } } /// <summary> /// 删除数据 /// </summary> /// <param name="sqlStr">删除语句</param> /// <param name="parameter">参数</param> /// <returns></returns> public static bool DeleteData(string sqlStr, params SqlParameter[] parameter) { try { using (SqlConnection conn = new SqlConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sqlStr, conn); cmd.Parameters.AddRange(parameter); var row = cmd.ExecuteNonQuery(); conn.Close(); if (row > 0) { return true; } return false; } } catch (Exception ex) { throw new ApplicationException("删除数据异常" + ex.Message); } } }
DataTools
public class DataTools { //读取配置文件,连接数据库语句 public static string strCon = System.Configuration.ConfigurationManager.ConnectionStrings["Family"].ConnectionString; private static OleDbConnection oleConn = new OleDbConnection(strCon);//access database /// <summary> /// 根据命令增加 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static int Insert(string sql) { int result = 0; try { oleConn.Open(); OleDbCommand oleCommand = new OleDbCommand(sql, oleConn); result = oleCommand.ExecuteNonQuery(); } catch (Exception ex) { throw ex; } finally { oleConn.Close(); } return result; } /// <summary> /// 根据命令查询表 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static DataTable Select(string sql) { DataTable tb = new DataTable(); try { oleConn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oleConn); adapter.Fill(tb); } catch (Exception exception) { string message = exception.Message; } finally { oleConn.Close(); } return tb; } /// <summary> /// 根据命令删除 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static int Delete(string sql) { int ifExecute = 0; try { oleConn.Open(); OleDbCommand comm = new OleDbCommand(sql); ifExecute = comm.ExecuteNonQuery(); } finally { oleConn.Close(); } return ifExecute; } /// <summary> /// 更新数据 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static int Update(string sql) { int ifExecute = 0; try { oleConn.Open(); OleDbCommand comm = new OleDbCommand(sql, oleConn); ifExecute = comm.ExecuteNonQuery(); } finally { oleConn.Close(); } return ifExecute; } /// <summary> /// 执行sql返回对象 /// </summary> /// <param name="sql">sql语句</param> /// <returns></returns> public static object ExecuteSingle(string sql) { object obj = null; try { oleConn.Open(); OleDbCommand comm = new OleDbCommand(sql, oleConn); obj = comm.ExecuteScalar(); } finally { oleConn.Close(); } return obj; } }
DAL
public class Family { //----------------------------------------DBbase类调用--------------------------------- //实例化一个DBbase对象 static DBbase db = new DBbase(); //查询用户数据 public static List<User> User() { //通过实体中的属性访问 拼接一个你需要的SQL语句 StringBuilder strSQL = new StringBuilder(); strSQL.Append("Select Theserialnumber, UserID, UserName, UserSet, Userphone, work.UserworkType,Details.WorkDetailsSituation,[level].UserleverlType,[type].UserType, UserCreationtime, hobby.Userhobby from [User] "); strSQL.Append("inner join Work on Work.UserworkID=[User].UserworkID "); strSQL.Append("inner join [level] on [level].UserlevelID=[user].UserlevelID "); strSQL.Append("inner join UserType as [type] on [type].UserTypeID=[USER].UserTypeID "); strSQL.Append("inner join WorkDetails as Details on Details.WorkDetailsID=Work.WorkDetailsID "); strSQL.Append("inner join Userhobby as hobby on hobby.UserhobbyID=[user].UserhobbyID"); return db.GetDataSet(strSQL.ToString()); } //-------------DBHelperl类调用----------------------------------------------------------- /// <summary> /// 根据条件查询 /// </summary> /// <param name="UserID">参数</param> /// <returns></returns> public static DataTable GetInfo(string UserID) { var sqlStr = "select * from [User] where UserID=@UserID"; //数据表对象获取方法数据 System.Data.SqlClient.SqlParameter参数获取 DataTable table = DBHelper.QueryData(sqlStr, new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@UserID", UserID) }); return table; } /// <summary> /// 增加数据 /// </summary> /// <param name="UserlevelID">参数</param> /// <param name="UserleverlType">参数</param> /// <returns></returns> public static bool AddData(string UserlevelID, string UserleverlType) { var sqlStr = "insert into [level] (UserlevelID, UserleverlType)values(@UserlevelID,@UserleverlType)"; bool bl = DBHelper.AddData(sqlStr, new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@UserlevelID", UserlevelID), new System.Data.SqlClient.SqlParameter("@UserleverlType", UserleverlType) }); return bl; } /// <summary> /// 修改数据 /// </summary> /// <param name="UserName">参数</param> /// <param name="UserSet">参数</param> /// <param name="UserID">参数</param> /// <returns></returns> public static bool UpdateData(string UserName, string UserSet, string UserID) { var sqlStr = "update [User] set UserName=@UserName, UserSet=@UserSet where UserID=@UserID"; bool bl = DBHelper.UpdateData(sqlStr, new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@UserID", UserID), new System.Data.SqlClient.SqlParameter("@UserName", UserName), new System.Data.SqlClient.SqlParameter("@UserSet", UserSet)}); return bl; } /// <summary> /// 删除数据 /// </summary> /// <param name="UserID">参数</param> /// <returns></returns> public static bool DeleteData(string UserID) { string sqlStr = "Delete From [User] Where UserID=@UserID"; bool bl = DBHelper.DeleteData(sqlStr, new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@UserID", UserID) }); return bl; } //----------------------------公共类 sqlHelper 调用------------------------------------------ /// <summary> /// 根据条件查询 /// </summary> /// <param name="UserID">参数</param> /// <param name="UserCreationtime">参数</param> /// <returns></returns> public static bool GetInfo(string UserID, DateTime UserCreationtime) { string sql = "select * from [User] where UserID=@UserID and UserCreationtime=@UserCreationtime"; Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("@UserID", UserID); dic.Add("@UserCreationtime", UserCreationtime.ToString()); ArrayList al = SqlHelper.SelectInfo(sql, dic); //判断是否为空,空为false if (al.Count > 0) { //得到几行数据就能产生多少个对象 foreach (Object[] obj in al) { User uset = new User(); uset.UserID = obj[0].ToString(); //参数转换,强转很容易发生异常,所以数据库的约束性要强,对象类时要认真检查数据类型,多用try...catch uset.UserCreationtime = Convert.ToDateTime(obj[1]); } } else { return false; } return true; } /// <summary> /// 增加数据 /// </summary> /// <param name="UserleverlType">参数</param> /// <returns></returns> public static bool GetAdd(string UserlevelID, string UserleverlType) { Dictionary<string, string> dic = new Dictionary<string, string>(); var strSql = "insert into [level] (UserlevelID, UserleverlType)values(@UserlevelID,@UserleverlType)"; //放置占位符 dic.Add("@UserlevelID", UserlevelID); dic.Add("@UserleverlType", UserleverlType); //将其放入字典(类似JSON,采用键值对的方式传递) if (!SqlHelper.SqlPour(strSql, dic)) { return false; } return true; } /// <summary> /// 修改数据 /// </summary> /// <param name="UserName">参数</param> /// <param name="UserSet">参数</param> /// <returns></returns> public static bool GetUpdate(string UserName, string UserSet, string UserID) { Dictionary<string, string> dic = new Dictionary<string, string>(); var strSql = "update [User] set UserName=@UserName, UserSet=@UserSet where UserID=@UserID"; dic.Add("@UserID", UserID); dic.Add("@UserName", UserName); dic.Add("@UserSet", UserSet); dic.Add("@UserCreationtime", DateTime.Now.ToString()); if (!SqlHelper.SqlPour(strSql, dic)) { return false; } return true; } /// <summary> /// 根据条件删除数据 /// </summary> /// <param name="UserID">参数</param> /// <returns></returns> public static bool GetDel(string UserID) { Dictionary<string, string> dic = new Dictionary<string, string>(); string sql = "DELETE FROM [User] WHERE UserID=@UserID"; dic.Add("UserID", UserID); if (!SqlHelper.SqlPour(sql, dic)) { return false; } return true; } }
来源:https://www.cnblogs.com/jstblog/p/12418165.html