本文整理自网络,侵删。
一、SqlDataReader
SqlConnection conn = new SqlConnection("server=10.126.64.11;user=it_oper;pwd=IT@SME2018;database=MESOtheata;"); conn.Open(); SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522]", conn);// 或者 //或者 SqlCommand cmd=conn.CreateCommand();cmd.CommandText=""; SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);//读取完毕自动关闭连接 for (int i = 0; i < reader.FieldCount - 1; i++) { Console.WriteLine(reader.GetName(i));//获取字段名 while (reader.Read())//或者使用reader.HasRows属性判断时候有记录 { Console.WriteLine(reader.GetDateTime(0).ToString()); //或者 Console.WriteLine(Convert.ToDateTime(reader[0]).ToString()); object[] values = new object[reader.FieldCount - 1]; reader.GetValues(values);//读取一行所有字段的内容到Values字段中 if (reader.IsDBNull(0) { //判断某字段是否为null值。 } } } reader.Close(); //系统未关闭时,本Command更改CommandText后或新建Command还有继续使用此连接。 //conn.Close();
二、参数化查询
1、使用SQLClient:
SqlCommand cmd = new SqlCommand("select * from [A_Emp_Dept_20190522] where empname=@empname", conn); SqlParameter para = new SqlParameter("@empname", SqlDbType.NVarChar, 10); para.Value = "曾亮"; cmd.Parameters.Add(para); //或者直接 cmd.Parameters.AddWithValue("@empname","曾亮");
2、使用OleDb:
OleDbCommand cmd = new OleDbCommand("select * from [A_Emp_Dept_20190522] where empname like ? and line like ?", conn); cmd.Parameters.AddWithValue("@empname", "曾亮"); cmd.Parameters.AddWithValue("@line", "ODMZ%");//参加的参数的顺序应与?号的顺序相同,参数名可随意执行,甚至可以是空串。
三、执行无返回值的查询:cmd.ExecuteNonQuery()
SqlCommand cmd = new SqlCommand("update [A_Emp_Dept_20190522] set dept='aa' where dept='' ", conn); int RecordAffected = cmd.ExecuteNonQuery(); if (RecordAffected == 0) { Console.Write("操作失败"); }
四、执行返回单值的查询:cmd.ExecuteScalar()
SqlCommand cmd = new SqlCommand("select count(*) from [A_Emp_Dept_20190522] ", conn); if (Convert.ToInt32(cmd.ExecuteScalar()) == 0)//无记录,返回null { Console.Write("无记录"); }
五、使用Transaction事务
SqlTransaction trans = null; try { trans = conn.BeginTransaction();//默认事务隔离级别为ISolationLevel.Serilizable,Oracle为ISolationLevel.ReadCommited SqlCommand cmd = new SqlCommand("Insert int **", conn); cmd.Transaction = trans;//为命令指定一个事务 cmd.ExecuteNonQuery(); //可以有多个SqlCommand一并执行,一起提交或回滚 trans.Commit(); } catch { trans.Rollback(); }
Transaction事务隔离级别:
相关阅读 >>
基于sqlalchemy实现操作mysql并执行原生sql语句
更多相关阅读请进入《sql》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。