2023年6月21日发(作者:)

C#数据库操作相关命令和语法⾸先介绍中的⼏个常⽤的对象,介绍的很简单。nection 这是数据库连接对象,通过对其进⾏实例化来创建针对数据库的连接,其参数为数据库连接字符串。如下:SqlConnection conn = new SqlConnection(strConnection)上⾯SqlConnection代表连接字符串 上⾯建⽴了连接,这个连接的名称为conn,这就相当于建⽴了⼀个从程序连接到数据库的⽔管,⽔管拉好了,但是要想从数据库中取出数据,还得拧开⽔龙头才可以,所以使⽤下⾯的语句打开⽔龙头(打开连接)

(); OK.,连接打开了,下⾯就可以取数据了,也就是可以接⽔了。但是需要注意的是⽔接完后,还得把⽔龙头关掉,这就需要下⾯的语句来执⾏(); //这两句形容的很贴切1、查询:最常⽤的有三种查询数据的⽅式,我们先介绍SqlCommand对象的ExecuteReader⽅法,此⽅法的返回值为SqlDataReader对象,这个对象也是ADO,NET中⼀个⾮常重要的对象,这个对象在程序和数据库之间建⽴了⼀个流,也可以理解为在程序和数据库之间划了⼀条线,这条线最开始指向数据库中查询出来的结果集的第1⾏的上⾯SqlDataAdapter和DataSet,DataTable ⾸先说⼀下DataTable对象,⼤家都知道HTML中的Table标签,其是由⾏和列组成的⼀个表格,同样DataTable也是有⾏和列组成的⼀个表格,每个单元格中存储的都是数据。 然后是DataSet对象,此对象就是⼀个DataTable的集合,可以通过下标来访问其中特定的DataTable。 重点是SqlDataAdapter对象,此对象的作⽤是从数据库中查询出数据,然后填充到DataTable或者DataSet中(填充DataSet,其实还是填充到DataTable中,我们以后就直接使⽤DataTable,⽽不再重复DataSet如下:将SqlDataAdapter对象和SqlCommand对象产⽣关联。使⽤SqlDataAdapter对象的Fill⽅法来填充DataTable,SqlDataAdapter adapter=new SqlDataAdapter(cmd);DataTable dt=new DataTable();(dt);2、delete,update,insertExecuteNonQuery()⽅法就是执⾏⼀条插⼊语句或者⼀条更改语句或者⼀条删除语句,其返回的是受影响的⾏数,只要其返回值>1,就表明执⾏成功。⾄于其为什么不能执⾏查询语句呢?因为查询语句要返回的是数据,⽽不是查询出了⼏⾏,所以不能使⽤这个⽅法。代码⽰例:⾃⼰写的⼀些代码:调⽤存储过程SqlConnection conn = new SqlConnection(connStr); (); SqlCommand comm = new SqlCommand("DeleteGroup", conn); dType = Procedure; ("@groupid", ).Value = groupid; ("@return", ).Direction = Value;//获取存储过程的返回值 //("@return", "").Direction = Value;//获取存储过程的返回值 这种⽅法会有警告 //("@outname", ).Direction = ;//获取存储过程的Output输出参数值 //("@outname", l).Direction = ;//也可以这么写 eNonQuery(); string value = ters["@return"].ng();//把返回值赋值给value if (value == "1") { return true; } else { return false; }1、注册:string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "insert into Users(username,password,email) values(@username,@password,@email)"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); SqlParameter password = new SqlParameter("@password", _); SqlParameter email = new SqlParameter("@email", _); //将映射关系添加到cmd中 (username); (password); (email); //打开数据连接 (); //执⾏插⼊操作 if (eNonQuery() >0) {

ct(""); } else { erStartupScript(GetType(), "提⽰", "", false); } } }2、登录 //连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) {

dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //打开数据连接 (); object obj = eScalar(); if (obj == null) { erStartupScript(GetType(), "提⽰", "", false); } else { string password = ng(obj); //⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } }上⾯使⽤的是eScalar()⽅法来获取查询结果。下⾯我们改成使⽤SqlDataReader对象来操作数据 //连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //打开数据连接 (); SqlDataReader reader = eReader(); //判断是否有查询结果 if (s) { //读取下⼀⾏ while (()) { string password =ng(String(inal("password"))); if (OrEmpty(password)) { erStartupScript(GetType(), "提⽰", "", false); } else {

//⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } }

} }下⾯解释⼀下红⾊的那句代码。可以将其拆解开来。inal("password"):获取指定列的序号,也就是说SqlDataReader对象每次只读取1⾏,这个⽅法获取的是“password”这⼀列在这1⾏的序号,也就是索引String(inal("password")):GetSqlString⽅法根据列的序号获取列的值最后将返回值转换成string类型最后使⽤第三种⽅式,代码如下://连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //声明SqlDataAdapter对象 SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); (dt); //判断是否有查询结果 if (>0) { //因为最多只返回⼀⾏数据(因为⽤户名是唯⼀的),所以可以直接使⽤[0]标⽰第1⾏,使⽤[0]["password"]来获取第1⾏中列名称为"pass string password = ng([0]["password"]); if (OrEmpty(password)) { erStartupScript(GetType(), "提⽰", "", false); } else { //⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } } }

2023年6月21日发(作者:)

C#数据库操作相关命令和语法⾸先介绍中的⼏个常⽤的对象,介绍的很简单。nection 这是数据库连接对象,通过对其进⾏实例化来创建针对数据库的连接,其参数为数据库连接字符串。如下:SqlConnection conn = new SqlConnection(strConnection)上⾯SqlConnection代表连接字符串 上⾯建⽴了连接,这个连接的名称为conn,这就相当于建⽴了⼀个从程序连接到数据库的⽔管,⽔管拉好了,但是要想从数据库中取出数据,还得拧开⽔龙头才可以,所以使⽤下⾯的语句打开⽔龙头(打开连接)

(); OK.,连接打开了,下⾯就可以取数据了,也就是可以接⽔了。但是需要注意的是⽔接完后,还得把⽔龙头关掉,这就需要下⾯的语句来执⾏(); //这两句形容的很贴切1、查询:最常⽤的有三种查询数据的⽅式,我们先介绍SqlCommand对象的ExecuteReader⽅法,此⽅法的返回值为SqlDataReader对象,这个对象也是ADO,NET中⼀个⾮常重要的对象,这个对象在程序和数据库之间建⽴了⼀个流,也可以理解为在程序和数据库之间划了⼀条线,这条线最开始指向数据库中查询出来的结果集的第1⾏的上⾯SqlDataAdapter和DataSet,DataTable ⾸先说⼀下DataTable对象,⼤家都知道HTML中的Table标签,其是由⾏和列组成的⼀个表格,同样DataTable也是有⾏和列组成的⼀个表格,每个单元格中存储的都是数据。 然后是DataSet对象,此对象就是⼀个DataTable的集合,可以通过下标来访问其中特定的DataTable。 重点是SqlDataAdapter对象,此对象的作⽤是从数据库中查询出数据,然后填充到DataTable或者DataSet中(填充DataSet,其实还是填充到DataTable中,我们以后就直接使⽤DataTable,⽽不再重复DataSet如下:将SqlDataAdapter对象和SqlCommand对象产⽣关联。使⽤SqlDataAdapter对象的Fill⽅法来填充DataTable,SqlDataAdapter adapter=new SqlDataAdapter(cmd);DataTable dt=new DataTable();(dt);2、delete,update,insertExecuteNonQuery()⽅法就是执⾏⼀条插⼊语句或者⼀条更改语句或者⼀条删除语句,其返回的是受影响的⾏数,只要其返回值>1,就表明执⾏成功。⾄于其为什么不能执⾏查询语句呢?因为查询语句要返回的是数据,⽽不是查询出了⼏⾏,所以不能使⽤这个⽅法。代码⽰例:⾃⼰写的⼀些代码:调⽤存储过程SqlConnection conn = new SqlConnection(connStr); (); SqlCommand comm = new SqlCommand("DeleteGroup", conn); dType = Procedure; ("@groupid", ).Value = groupid; ("@return", ).Direction = Value;//获取存储过程的返回值 //("@return", "").Direction = Value;//获取存储过程的返回值 这种⽅法会有警告 //("@outname", ).Direction = ;//获取存储过程的Output输出参数值 //("@outname", l).Direction = ;//也可以这么写 eNonQuery(); string value = ters["@return"].ng();//把返回值赋值给value if (value == "1") { return true; } else { return false; }1、注册:string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "insert into Users(username,password,email) values(@username,@password,@email)"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); SqlParameter password = new SqlParameter("@password", _); SqlParameter email = new SqlParameter("@email", _); //将映射关系添加到cmd中 (username); (password); (email); //打开数据连接 (); //执⾏插⼊操作 if (eNonQuery() >0) {

ct(""); } else { erStartupScript(GetType(), "提⽰", "", false); } } }2、登录 //连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) {

dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //打开数据连接 (); object obj = eScalar(); if (obj == null) { erStartupScript(GetType(), "提⽰", "", false); } else { string password = ng(obj); //⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } }上⾯使⽤的是eScalar()⽅法来获取查询结果。下⾯我们改成使⽤SqlDataReader对象来操作数据 //连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //打开数据连接 (); SqlDataReader reader = eReader(); //判断是否有查询结果 if (s) { //读取下⼀⾏ while (()) { string password =ng(String(inal("password"))); if (OrEmpty(password)) { erStartupScript(GetType(), "提⽰", "", false); } else {

//⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } }

} }下⾯解释⼀下红⾊的那句代码。可以将其拆解开来。inal("password"):获取指定列的序号,也就是说SqlDataReader对象每次只读取1⾏,这个⽅法获取的是“password”这⼀列在这1⾏的序号,也就是索引String(inal("password")):GetSqlString⽅法根据列的序号获取列的值最后将返回值转换成string类型最后使⽤第三种⽅式,代码如下://连接字符串 string strConnection = "user id=sa;password=sa;initial catalog=MyTest;Server=YHB;Connect Timeout=30"; //实例化数据库连接对象 using (SqlConnection conn = new SqlConnection(strConnection)) { //实例化命令对象 using (SqlCommand cmd = Command()) { dText = "select password from users where username=@username"; //实例化SqlParameter对象,为@username等建⽴映射关系 SqlParameter username = new SqlParameter("@username", _); //将映射关系添加到cmd中 (username); //声明SqlDataAdapter对象 SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); (dt); //判断是否有查询结果 if (>0) { //因为最多只返回⼀⾏数据(因为⽤户名是唯⼀的),所以可以直接使⽤[0]标⽰第1⾏,使⽤[0]["password"]来获取第1⾏中列名称为"pass string password = ng([0]["password"]); if (OrEmpty(password)) { erStartupScript(GetType(), "提⽰", "", false); } else { //⽐较从数据库获取的密码和⽤户输⼊的密码是否⼀致 if (password != _) { erStartupScript(GetType(), "提⽰", "", false); } else { erStartupScript(GetType(), "提⽰", "", false); } } } } }