C#连接数据库以及增、删、改、查操作
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _03.ado.net { class Program { static void Main(string[] args) { #region 连接数据库 ////连接数据库的步骤: ////1.创建连接字符串 ////Data Source=服务器名; ////Initial Catalog=数据库名; ////Integrated Security=True;声明验证方式 ////用户名、密码方式 //string constr = "Data Source=localhost;Initial Catalog=zwt;uid=root;pwd=zwt"; ////集成式 ////string constr = "Data Source=localhost;Initial Catalog=zwt;integrated Security=true"; ////2.创建连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //测试,打开连接 // //3.打开连接(如果打开数据连接没有问题,表示连接成功) // con.Open(); // Console.WriteLine("数据库连接成功"); // //4.关闭连接,释放资源 // con.Close(); // //con.Dispose(); //} //Console.WriteLine("断开连接"); //Console.ReadKey(); #endregion #region 增加数据 ////连接数据库的步骤: ////1.创建连接字符串 ////Data Source=服务器名; ////Initial Catalog=数据库名; ////Integrated Security=True;声明验证方式 ////用户名、密码方式 //string constr = "Data Source=localhost;Initial Catalog=zwt;uid=root;pwd=zwt"; ////集成式 ////string constr = "Data Source=localhost;Initial Catalog=zwt;integrated Security=true"; ////2.创建连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //4.编写SQL语句 // string sql = "insert into zwt values('Tony',23,'男')"; // //5.创建一个执行sql语句的对象(命令对象)sqlcommand // using (SqlCommand cmd = new SqlCommand(sql, con)) // { // //6.开始执行SQL语句 // //3个命令对象 // //cmd.ExecuteNonQuery();方法有一个int型的返回值,表示执行insert、delete、update语句后所影响的行数, // //并且只有执行这3种语句时返回影响的行数,其他语句都返回-1 // int r = cmd.ExecuteNonQuery(); // //cmd.ExecuteNonQuery();//执行insert、delete、update语句 // //cmd.ExecuteScalar();//执行返回单个结果 // //cmd.ExecuteReader();//查询出多行、多列结果 // //3.打开连接(连接对象最晚打开,最早关闭,节约资源) // con.Open(); // Console.WriteLine("已成功插入{0}行数据", r); // } //} //Console.ReadKey(); #endregion #region 删除数据 ////1.创建连接字符串 //string constr = "Data Source=localhost;Initial Catalog=zwt;Integrated Security=True"; ////2.连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //3.sql语句 // string sql = "delete from zwttable where name=tony"; // //4.创建sqlcommand对象 // using (SqlCommand cmd = new SqlCommand(sql, con)) // { // //5.打开链接 // con.Open(); // //6.执行 // int r = cmd.ExecuteNonQuery(); // Console.WriteLine("成功删除了{0}行数据", r); // } //} //Console.ReadKey(); #endregion #region 修改数据 ////1.创建连接字符串 //string constr = "Data Source=localhost;Initial Catalog=zwt;Integrated Security=True"; ////2.连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //3.sql语句 // string sql = "update zwttable set name=tony,age=26"; // //4.创建sqlcommand对象 // using (SqlCommand cmd = new SqlCommand(sql, con)) // { // //5.打开链接 // con.Open(); // //6.执行 // int r = cmd.ExecuteNonQuery(); // Console.WriteLine("成功更新了{0}行数据", r); // } //} //Console.ReadKey(); #endregion #region 查询一条数据 ////1.创建连接字符串 //string constr = "Data Source=localhost;Initial Catalog=zwt;Integrated Security=True"; ////2.连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //3.sql语句 // string sql = "select count(*) from zwttable"; // //4.创建sqlcommand对象 // using (SqlCommand cmd = new SqlCommand(sql, con)) // { // //5.打开链接 // con.Open(); // //6.执行 // //sql语句执行时如果是聚合函数,ExecuteScalar()的返回不可能为null,如果不是聚合函数则需要判断是否为null // //object count = (int)cmd.ExecuteScalar(); // //避免异常 // object count = Convert.ToInt32(cmd.ExecuteScalar()); // Console.WriteLine("zwttable表中共有{0}条数据", count); // } //} //Console.ReadKey(); #endregion #region 查询多条数据 ////1.创建连接字符串 //string constr = "Data Source=localhost;Initial Catalog=zwt;Integrated Security=True"; ////2.连接对象 //using (SqlConnection con = new SqlConnection(constr)) //{ // //3.sql语句 // string sql = "select * from zwttable"; // //4.创建sqlcommand对象 // using (SqlCommand cmd = new SqlCommand(sql, con)) // { // //5.打开链接 // con.Open(); // //通过调用ExecuteReader()方法,将给定的sql语句在服务器端执行 // //执行完毕后,服务器端已经查好数据,但数据保存在数据库服务器内存里。并没有返回给应用程序, // //只是返回给应用程序一个reader对象,这个对象就是用来获取数据的对象 // using (SqlDataReader reader = cmd.ExecuteReader()) // { // //接下来就是要通过reader对象一条一条获取数据 // //1.在获取数据前,先判断一下本次执行查询后,是否查到了数据 // if(reader.HasRows)//如果有数据为true,否则为false // { // //2.如果有数据,那么接下来就要一条条获取数据 // //每次获取数据之前,都要调用reader.Read()方法,向后移动一条数据,如果成功移动到了某条数据 // //上,则返回true,否则返回false // while (reader.Read()) // { // //获取当前reader指向的数据 // //reader.FieldCount可以获取当前查询语句查询到的列数 // for (int i = 0; i < reader.FieldCount; i++) // { // Console.Write(reader[i]+" | "); // } // Console.WriteLine(); // } // } // else // { // Console.WriteLine("没有查到数据"); // } // } // } //} //Console.ReadKey(); #endregion } } }
happyzwt的分享