ADO.NET 增删改查、SQLHelper

20 篇文章 2 订阅

SQL Server

SqlConnection Sqlcommand Sql Dataset

连接关闭测试

 public  static void ConnectDB()
        {
            //创建数据库连接对象
            string connString = "Server=.;DataBase=TestManageDB;Uid=sa;Pwd=******";
            SqlConnection conn = new SqlConnection(connString);
            //打开连接
            conn.Open();
            //判断数据库是否成功打开
            if (conn.State == ConnectionState.Open) Console.WriteLine("连接成功");

            //关闭连接
            conn.Close();
            if (conn.State == ConnectionState.Closed) Console.WriteLine("关闭成功");
        }

一个操作数据库过程

 public static void ExecuteInsert()
        {
            //1.创建连接对象
            string connString = "Server=.;DataBase=TestManageDB;Uid=sa;Pwd=******";
            SqlConnection conn = new SqlConnection(connString);
            //定义sql语句
            string sql = "insert into UserNews(NewsId,NewsName,NewsContent) values(100,'在这种','哈哈哈哈')";
            //2.创建Command对象
            //SqlCommand cmd = new SqlCommand();
            //cmd.CommandText = sql;
            //cmd.Connection = conn;
            SqlCommand cmd = new SqlCommand(sql, conn);
            //3.打开数据库连接
            conn.Open();
            //4.执行操作(只能用于insert、update、delete)
            cmd.ExecuteNonQuery();//执行sql语句,并返回受影响的行数
            //5.关闭连接
            conn.Close();
        }

注:ExecuteNonQuery()方法只能用于增删改

增删改实例

public static void ExecuteDo()
        {
            //1.创建连接对象
            string connString = "Server=.;DataBase=TestManageDB;Uid=sa;Pwd=******";
            SqlConnection conn = new SqlConnection(connString);
            //定义sql语句
            //增
            string sql = "insert into UserNews(NewsId,NewsName,NewsContent) values(100,'小章','噢噢噢噢'),(1001,'小丑','斤斤计较'),(1002,'小伟','啊啊啊')";
           //更新
            string sql2 = "update UserNews set NewsId=1000 where NewsId=100";
            //删除
            string sql3 = "delete from UserNews where NewsId=1000";
            //2.创建Command对象

           // SqlCommand cmd = new SqlCommand(sql1, conn);
           // SqlCommand cmd = new SqlCommand(sql2, conn);
            SqlCommand cmd = new SqlCommand(sql3, conn);
         
            //3.打开数据库连接
            conn.Open();
            //4.执行操作(只能用于执行insert、update、delete、不能指向)
           int result= cmd.ExecuteNonQuery();//执行sql语句,并返回受影响的行数
           Console.WriteLine("受影响行数:" + result);
            //5.关闭连接
            conn.Close();
        }

执行单一结果查询

ExexuteScalar()方法,一般用来执行查询,结果返回object类型

  /// <summary>
        /// 执行单一结果查询
        /// </summary>
        public static void ExecuteSingle() 
        {
            //1.创建连接对象
            string connString = "Server=.;DataBase=TestManageDB;Uid=sa;Pwd=******";
            SqlConnection conn = new SqlConnection(connString);
            //定义sql语句
           string sql="select Count(*)as NewsId from UserNews";
            //2.创建Command对象,
           
            SqlCommand cmd = new SqlCommand(sql, conn);

            //3.打开数据库连接
            conn.Open();
            //4.执行查询操作(ExexuteScalar方法,一般用来执行查询,结果返回object类型)
            object result = cmd.ExecuteScalar();//执行sql语句,返回第一行第一列
            Console.WriteLine("查询结果:" + result);
            //5.关闭连接
            conn.Close();
        }

ExecuteScalar()方法,如果执行的SQL语句是一个查询语句(SELECT),则返回结果是查询后的第一行的第一列

 

执行多条结果查询

ExexuteReader()方法,多条结果查询,结果返回SqlDataReader类型,数据存在数据库中,需要用Read()方法读取

 /// <summary>
        /// 执行多条结果查询
        /// </summary>
        public static void ExecuteRead() 
        {
            //1.创建连接对象
            string connString = "Server=.;DataBase=TestManageDB;Uid=sa;Pwd=******";
            SqlConnection conn = new SqlConnection(connString);
            //定义sql语句
           string sql="select NewsId,NewsName,NewsContent from UserNews";
            //2.创建Command对象
           
            SqlCommand cmd = new SqlCommand(sql, conn);

            //3.打开数据库连接
            conn.Open();
            //4.执行查询操作(ExexuteReader方法,一般用来执行查询,结果返回SqlDataReader类型)
            SqlDataReader reader = cmd.ExecuteReader();//执行sql语句,并返回受影响的行数
            
            //判断是否有查询结果,来决定读取数据
            int i=0;
            while(reader.Read())
            {
                Console.WriteLine("第{0}行记录:", ++i);
                Console.WriteLine(reader[0].ToString() + "\t" + reader[1] + "\t" + reader[2]); 
            }
            //关闭读取器对象
            reader.Close();
            //5.关闭连接
            conn.Close();
        }

 

使用config来连接数据库

//配置文件中
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
<connectionStrings>
  <add name="testConnString" connectionString="Server=.;DataBase=TestManageDB;Uid=sa;Pwd=ZY18752375323"/>
</connectionStrings>
</configuration>

//静态连接字段
private static string connString = ConfigurationManager.ConnectionStrings["testConnString"].ToString();

需要引用system.configuration

 

SQLHelper

 private static string connString = ConfigurationManager.ConnectionStrings["testConnString"].ToString();      
       /// <summary>
       /// 增、删、改
       /// </summary>
       /// <param name="sql">数据库操作字符串</param>
       /// 返回受影响行数
       public static int ExeNonQue(string sql)
       {
           //1.创建连接对象     
           SqlConnection conn = new SqlConnection(connString);      
           //2.创建Command对象,
           SqlCommand cmd = new SqlCommand(sql, conn);         
           conn.Open();
           int result=cmd.ExecuteNonQuery();//执行sql语句,并返回受影响的行数
           conn.Close();
           return result;
       }

//使用try catch验证
 public static int ExeNonQue(string sql)
       {
           //1.创建连接对象     
           SqlConnection conn = new SqlConnection(connString);      
           //2.创建Command对象,
           SqlCommand cmd = new SqlCommand(sql, conn);
           try 
           { 
               conn.Open();
               return cmd.ExecuteNonQuery();//执行sql语句,并返回受影响的行数
           }
           catch(Exception ex)
           {
               throw new Exception("执行方法public static int ExeNon(string sql)时发生异常:" + ex);
           }
           finally
           {
               conn.Close();
           } 
       }
//使用using自动关闭连接
        /// <summary>
        /// 添加、修改、删除通用
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="paras"></param>
        /// <returns></returns>
        public static int ExeNonQue(string sql,params SqlParameter[] paras)//params 设置为可选参数(即可传可不传值)
        {
        {
            //using自动释放资源(不需要写close())
            using (SqlConnection conn = new SqlConnection(connString))
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                if(paras.Length!=0)//paras没有传值时
                {
                cmd.Parameters.AddRange(paras);
                }
                try
                {
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw new Exception("static int ExeNonQue(string sql)方法出错" + ex.Message);
                    
                }
            }
        }

       /// <summary>
       /// 返回首行首列
       /// </summary>
       /// <param name="sql"></param>
       /// <returns></returns>
       public static string ExeSca(string sql)
       {
        
            //1.创建连接对象            
            SqlConnection conn = new SqlConnection(connString);         
            //2.创建Command对象,          
            SqlCommand cmd = new SqlCommand(sql, conn); 
            //3.打开数据库连接
            conn.Open();
            //4.执行查询操作(ExexuteScalar方法,一般用来执行查询,结果返回object类型)
            string result = (cmd.ExecuteScalar()).ToString();//执行sql语句,返回第一行第一列
           // Console.WriteLine("查询结果:" + result);
            //5.关闭连接
            conn.Close();
            return result;
        
       }
//try catch验证
       /// <summary>
       /// 返回首行首列
       /// </summary>
       /// <param name="sql"></param>
       /// <returns></returns>
       public static string ExeSca(string sql)
       {                            
            SqlConnection conn = new SqlConnection(connString);                             
            SqlCommand cmd = new SqlCommand(sql, conn);
            try
            { 
             conn.Open();
             return Convert.ToString(cmd.ExecuteScalar());//执行sql语句,返回第一行第一列(obj类型)
            }
           catch(Exception ex)
            {
                throw new Exception("执行方法public static string ExeSca(string sql)时发生异常:" + ex);
            }
            finally
            {
                conn.Close();
            } 
       }

   /// <summary>
        /// 获取结果集,需要自己读取
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SqlDataReader GetReader(string sql)
       {
           SqlConnection conn = new SqlConnection(connString);
           SqlCommand cmd = new SqlCommand(sql, conn);
           try 
           {
           conn.Open();
           //执行查询操作(ExexuteReader方法,结果返回SqlDataReader类型数据流)
           //添加CommandBehavior.CloseConnection后,reader对象的conn连接会跟随reader对象的关闭自动关闭
            //所以读取完数据后一定要记得关闭reader对象(即dr.close())
           SqlDataReader dr= cmd.ExecuteReader(CommandBehavior.CloseConnection);
           return dr;
           }
           catch(Exception ex)
           {
               throw new Exception("执行方法 public static SqlDataReader GetReader(string sql)时发生异常:" + ex);
            }
             
       }

GetReader()方法,返回数据流的使用示例

public class SQLHelper
{  
    public static SqlDataReader GetReader(string sql)
       {
           SqlConnection conn = new SqlConnection(connString);
           SqlCommand cmd = new SqlCommand(sql, conn);
           try 
           {
           conn.Open();
           //执行查询操作(ExexuteReader方法,结果返回SqlDataReader类型数据流)
           //添加CommandBehavior.CloseConnection后,reader对象的conn连接会跟随reader对象的关闭自动关闭
            //所以读取完数据后一定要记得关闭reader对象(即dr.close())
           SqlDataReader dr= cmd.ExecuteReader(CommandBehavior.CloseConnection);
           return dr;
           }
           catch(Exception ex)
           {
               throw new Exception("执行方法 public static SqlDataReader GetReader(string sql)时发生异常:" + ex);
            }
             
       }
}

public class Test
{

    public void TestSQLHelper3()
        {
            string sql = "select * from UserNews ";
            SqlDataReader dr = SQLHelper.GetReader(sql);
            int i = 0;
           while(dr.Read())
           {
               Console.WriteLine("第{0}行记录:", ++i);
               Console.WriteLine(dr[0].ToString() + "\t" + dr[1] + "\t" + dr[2]); 
           }
           dr.Close();//关闭了dr对象,即自动关闭了conn
           
        }
}

ExecuteReader()方法返回的是一个指向数据的流,数据需要我们从中读取,如果读取之前关闭了数据连接(conn.close()),就会报错(阅读器关闭时尝试调用read无效)。添加CommandBehavior.CloseConnection后,reader对象的conn连接会跟随reader对象的关闭自动关闭,所以无需关闭conn数据连接,只要在读完数据后关闭阅读器就可以自动关闭数据连接。

 

DataTable

 public static DataTable GetDataTable(string sql, params SqlParameter[] paras)//params 设置为可选参数(即可传可不传值)
        {
            DataTable dt = new DataTable();
            //datatable是断开式连接,不需要open(),也不需要close()
            using (SqlConnection conn = new SqlConnection(connString))//using表示作用域外自动关闭连接(虽然datatable不需要关闭和打开)
            {
                SqlCommand cmd = new SqlCommand(sql, conn);
                if(paras.Length!=0)
                {
                    cmd.Parameters.AddRange(paras);
                }               
                //创建数据适配器
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                //填充
                adapter.Fill(dt);
            }
            return dt;
        }

使用实例 

 public void GetDataTable()
        {
            usernews.NewsId = 1001;//因为是测试,就在这里传数据了
            SqlParameter[] paras = new SqlParameter[]
            {
                new SqlParameter("@NewsId",usernews.NewsId)                      
            };
            string sql = " select * from UserNews where NewsId=@NewsId";
          DataTable dt=  SQLHelper.GetDataTable(sql,paras);
            //遍历出datatable中数据          
          for (int i = 0; i < dt.Rows.Count; i++)
          {
              for (int j = 0; j < dt.Columns.Count;j++ )
              {
                  Console.Write(dt.Rows[i][j]+"  ");
              }
              Console.WriteLine();
          }                  
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,由于我是一名自然语言处理模型,无法直接提供编程环境。不过我可以给你提供一些思路和代码示例,希望能够帮助你完成这个项目。 1. 连接数据库 使用ADO.NET对象来连接数据库,可以使用SqlConnection类来创建连接对象。在连接对象创建完成后,可以使用SqlCommand类来执行SQL语句。以下是连接数据库的示例代码: ```csharp using System.Data.SqlClient; SqlConnection conn = new SqlConnection("连接字符串"); conn.Open(); SqlCommand cmd = new SqlCommand("SQL语句", conn); cmd.ExecuteNonQuery(); conn.Close(); ``` 2. 使用SqlHelper工具类 SqlHelper是一个常用的工具类,可以简化数据库操作的代码。以下是SqlHelper类的示例代码: ```csharp using System.Data; using System.Data.SqlClient; public class SqlHelper { private static string connectionString = "连接字符串"; public static int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(cmdText, conn)) { if (parameters != null) { cmd.Parameters.AddRange(parameters); } conn.Open(); return cmd.ExecuteNonQuery(); } } } public static object ExecuteScalar(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(cmdText, conn)) { if (parameters != null) { cmd.Parameters.AddRange(parameters); } conn.Open(); return cmd.ExecuteScalar(); } } } public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand(cmdText, conn)) { if (parameters != null) { cmd.Parameters.AddRange(parameters); } conn.Open(); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } } ``` 3. 创建学生信息表 在数据库中创建一个名为Student的表,包含以下列:ID(主键)、Name、Age、Gender、Class。 ```sql CREATE TABLE Student ( ID INT PRIMARY KEY, Name NVARCHAR(50) NOT NULL, Age INT NOT NULL, Gender NVARCHAR(10) NOT NULL, Class NVARCHAR(50) NOT NULL ) ``` 4. 界面设计 使用Windows Forms创建一个窗体,包含DataGridView和若干个文本框和按钮,用于显示、添加、修改、删除学生信息。 5. 数据绑定 在窗体加载时,使用SqlHelper工具类从数据库中读取学生信息,并将其显示在DataGridView中。以下是示例代码: ```csharp private void Form1_Load(object sender, EventArgs e) { string cmdText = "SELECT * FROM Student"; DataTable dt = SqlHelper.ExecuteDataTable(cmdText); dataGridView1.DataSource = dt; } ``` 6. 查询数据 在查询按钮的Click事件中,使用SqlHelper工具类根据条件从数据库中读取学生信息,并将其显示在DataGridView中。以下是示例代码: ```csharp private void btnSearch_Click(object sender, EventArgs e) { string name = txtName.Text.Trim(); string cmdText = "SELECT * FROM Student WHERE Name LIKE @Name"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@Name", "%" + name + "%") }; DataTable dt = SqlHelper.ExecuteDataTable(cmdText, parameters); dataGridView1.DataSource = dt; } ``` 7. 添加数据 在添加按钮的Click事件中,使用SqlHelper工具类向数据库中插入一条学生信息,并更新DataGridView中的数据。以下是示例代码: ```csharp private void btnAdd_Click(object sender, EventArgs e) { string name = txtName.Text.Trim(); int age = int.Parse(txtAge.Text.Trim()); string gender = cboGender.Text; string @class = txtClass.Text.Trim(); string cmdText = "INSERT INTO Student(ID, Name, Age, Gender, Class) VALUES(@ID, @Name, @Age, @Gender, @Class)"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@ID", GetNewID()), new SqlParameter("@Name", name), new SqlParameter("@Age", age), new SqlParameter("@Gender", gender), new SqlParameter("@Class", @class) }; SqlHelper.ExecuteNonQuery(cmdText, parameters); string cmdText2 = "SELECT * FROM Student"; DataTable dt = SqlHelper.ExecuteDataTable(cmdText2); dataGridView1.DataSource = dt; } ``` 8. 修改数据 在DataGridView的CellDoubleClick事件中,获取选中行的学生信息,并将其显示在文本框中。在修改按钮的Click事件中,使用SqlHelper工具类更新选中行的学生信息,并更新DataGridView中的数据。以下是示例代码: ```csharp private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { txtName.Text = dataGridView1.Rows[e.RowIndex].Cells["Name"].Value.ToString(); txtAge.Text = dataGridView1.Rows[e.RowIndex].Cells["Age"].Value.ToString(); cboGender.Text = dataGridView1.Rows[e.RowIndex].Cells["Gender"].Value.ToString(); txtClass.Text = dataGridView1.Rows[e.RowIndex].Cells["Class"].Value.ToString(); } private void btnUpdate_Click(object sender, EventArgs e) { int id = int.Parse(dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString()); string name = txtName.Text.Trim(); int age = int.Parse(txtAge.Text.Trim()); string gender = cboGender.Text; string @class = txtClass.Text.Trim(); string cmdText = "UPDATE Student SET Name=@Name, Age=@Age, Gender=@Gender, Class=@Class WHERE ID=@ID"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@Name", name), new SqlParameter("@Age", age), new SqlParameter("@Gender", gender), new SqlParameter("@Class", @class), new SqlParameter("@ID", id) }; SqlHelper.ExecuteNonQuery(cmdText, parameters); string cmdText2 = "SELECT * FROM Student"; DataTable dt = SqlHelper.ExecuteDataTable(cmdText2); dataGridView1.DataSource = dt; } ``` 9. 删除数据 在删除按钮的Click事件中,使用SqlHelper工具类删除选中行的学生信息,并更新DataGridView中的数据。以下是示例代码: ```csharp private void btnDelete_Click(object sender, EventArgs e) { int id = int.Parse(dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString()); string cmdText = "DELETE FROM Student WHERE ID=@ID"; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@ID", id) }; SqlHelper.ExecuteNonQuery(cmdText, parameters); string cmdText2 = "SELECT * FROM Student"; DataTable dt = SqlHelper.ExecuteDataTable(cmdText2); dataGridView1.DataSource = dt; } ``` 以上是一个简单的学生信息管理系统的实现代码示例,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值