C#处理数据库

  • SQLConnection是SQL专用的

事务的提交与回滚

//读取数据库连接字符串            
string connstr = "server=;database=;uid=;pwd=";
using (SqlConnection conn = new SqlConnection(connstr))
{
    conn.Open();
    //创建一个事务
    SqlTransaction st = conn.BeginTransaction();
    using (SqlCommand cmd = new SqlCommand(sqlstr, conn))
    {
        cmd.Transaction = st;
        try
        {
             cmd.ExecuteNonQuery();
             //提交
             st.Commit();
         }
         catch
         {
              //回滚
              st.Rollback();
         }
    }
}

批量加载数据库,使用SqlBulkCopy类,SqlBulkCopy类官方API

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{                    
    bulkCopy.DestinationTableName = tablename;    //要插入的表
    bulkCopy.BatchSize = dt.Rows.Count;       //批处理中的行数
    bulkCopy.WriteToServer(dt);    //写入数据库,dt为数据源
}

如果数据十分重要,可在操作表格之前,执行一次临时表进行测试,顺利再执行操作数据。

  • OLEDBConnection可以对其他数据库的连接,如Access

 连接Access时,将debug设置为x86。

//查询方法
public static string ConnStr { get { return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.mdb文件路径"; } }
            
using (OleDbConnection conn = new OleDbConnection(ConnStr))
{
    string strSQL = sql;
    using (OleDbCommand cmd = new OleDbCommand(strSQL, conn))
    {
        using (OleDbDataAdapter oda = new OleDbDataAdapter(cmd))
        {
            DataTable dt = new DataTable();
            oda.Fill(dt);
            return dt;
        }
    }
}
//增删改方法
using (OleDbConnection conn = new OleDbConnection(ConnStr))
{
    conn.Open();
    OleDbTransaction st = conn.BeginTransaction();
    using (OleDbCommand cmd = new OleDbCommand(strSQL, conn, st))
    {
        try
        {
            int result = cmd.ExecuteNonQuery();
            st.Commit();
            return result;
        }
        catch (Exception ex)
        {
            st.Rollback();
            throw ex;
        }
    }
}

 

你可能感兴趣的:(C#)