问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言、C#、.net的区别是什么?

发布网友 发布时间:2022-05-02 05:23

我来回答

2个回答

懂视网 时间:2022-05-02 09:44

/// <summary> 2 /// 执行sql语句 3 /// </summary> 4 /// <param name="sql">需要执行的sql语句</param> 5 public bool ExecuteSql(string sql, ref string errorMsg) 6 { 7 SetConnOpen(); 8 string[] sqls = serializeSql(sql); 9 OleDbTransaction tran = conn.BeginTransaction(); 10 try 11 { 12 comm = new OleDbCommand(); 13 comm.Transaction = tran; 14 comm.Connection = conn; 15 foreach (string s in sqls) 16 { 17 var temps = s.Trim().Replace(" ", ""); 18 if (!string.IsNullOrEmpty(temps)) 19 { 20 comm.CommandText = temps; 21 comm.ExecuteNonQuery(); 22 } 23 } 24 tran.Commit(); 25 return true; 26 } 27 catch(Exception ex) 28 { 29 tran.Rollback(); 30 errorMsg = ex.Message; 31 return false; 32 } 33 finally 34 { 35 conn.Close(); 36 } 37 } 执行包含sql语句的字符串 技术分享
/// <summary>
 /// 从sql脚本文件执行
 /// </summary>
 /// <param name="sqlFilePath">sql脚本文件的路径</param>
 /// <returns></returns>
 public bool ExecuteSqlByFile(string sqlFilePath,ref string errorMsg)
 {
  if(!File.Exists(sqlFilePath))
  {
  throw new FileNotFoundException("未找到该sql脚本,请检查路径是否错误");
  }

  string sourceSql = new StreamReader(sqlFilePath).ReadToEnd();
  string[] sqls = serializeSql(sourceSql);
  SetConnOpen();
  OleDbTransaction tran = conn.BeginTransaction();
  try
  {
  comm = new OleDbCommand();
  comm.Transaction = tran;
  comm.Connection = conn;
  foreach (string s in sqls)
  {
   var temps = s.Trim().Replace("
", "");
   if (!string.IsNullOrEmpty(temps))
   {
   comm.CommandText = temps;
   comm.ExecuteNonQuery();
   }
  }
  tran.Commit();
  return true;
  }
  catch (Exception ex)
  {
  tran.Rollback();
  errorMsg = ex.Message;
  return false;
  }
  finally
  {
  conn.Close();
  }
 }
 /// <summary>
 /// 将sql脚本进行序列化
 /// </summary>
 /// <param name="sql">sql脚本</param>
 /// <returns></returns>
 private string[] serializeSql(string sql)
 {
  string[] ss = sql.Split(new string[1] { "/*go*/" }, StringSplitOptions.RemoveEmptyEntries);
  return ss;
 }
执行包含sql语句的文件

 其实思路比较简单,就是将sql语句用字符串进行分割,然后将一条条sql语句组合成一个数组,依次进行执行即可。在执行过程中使用事务处理,当错误发生时,能够进行回滚操作。下面是完整代码:

AccessUtils.cs

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Configuration;
 6 using System.Data.OleDb;
 7 using System.Data.OleDb;
 8 using System.IO;
 9 using System.Data;
 10 
 11 namespace AccessRuntime.Bin
 12 {
 13 /// <summary>
 14 /// Access工具类
 15 /// </summary>
 16 internal sealed class AccessUtils
 17  {
 18  /// <summary>
 19  /// access数据库连接字符串
 20  /// </summary>
 21  private string accessConnectionString = string.Empty;
 22  /// <summary>
 23  /// access数据库连接对象
 24  /// </summary>
 25  private OleDbConnection conn;
 26  /// <summary>
 27  /// access数据库命令对象
 28  /// </summary>
 29  private OleDbCommand comm;
 30  /// <summary>
 31  /// access数据库连接字符串
 32  /// </summary>
 33  public string AccessConnectionString
 34  {
 35  get {
 36   if (!string.IsNullOrEmpty(accessConnectionString))
 37   return accessConnectionString;
 38   else
 39   {
 40   string connstr = ConfigurationManager.ConnectionStrings["AccessRuntimeConnectionString"].ConnectionString;
 41   if (string.IsNullOrEmpty(connstr))
 42    throw new ConnectionStringElementNotFindException("未找到或未设置AccessRuntimeConnectionString节点");
 43   else
 44    return connstr;
 45   }
 46   }
 47  }
 48  /// <summary>
 49  /// 初始化连接(有密码)
 50  /// </summary>
 51  /// <param name="filepath">可以为空,为空则调用配置文件</param>
 52  /// <param name="pwd">数据库密码</param>
 53  /// <example>
 54  /// public AccessUtils("123",null)
 55  /// </example>
 56  public AccessUtils(string pwd,string filepath)
 57  {
 58  if (string.IsNullOrEmpty(filepath))
 59   {
 60   filepath = AccessConnectionString;
 61   }
 62  this.conn = new OleDbConnection(filepath + "; Jet OLEDB:Database Password=" + pwd);
 63   conn.Open();
 64  }
 65 
 66  /// <summary>
 67  /// 初始化连接(无密码)
 68  /// </summary>
 69  /// <param name="filepath"></param>
 70  /// <example>
 71  /// 1.public AccessUtils(filepath)
 72  /// 2.public AccessUtils()//不传递参数则调用配置文件
 73  /// </example>
 74  public AccessUtils(string filepath = null)
 75  {
 76  if (string.IsNullOrEmpty(filepath))
 77   {
 78   filepath = AccessConnectionString;
 79   }
 80  this.conn = new OleDbConnection(filepath);
 81   conn.Open();
 82  }
 83 
 84  /// <summary>
 85  /// 执行sql语句
 86  /// </summary>
 87  /// <param name="sql">需要执行的sql语句</param>
 88  public bool ExecuteSql(string sql, ref string errorMsg)
 89  {
 90   SetConnOpen();
 91  string[] sqls = serializeSql(sql);
 92  OleDbTransaction tran = conn.BeginTransaction();
 93  try
 94   {
 95   comm = new OleDbCommand();
 96   comm.Transaction = tran;
 97   comm.Connection = conn;
 98   foreach (string s in sqls)
 99   {
100   var temps = s.Trim().Replace("
", "");
101   if (!string.IsNullOrEmpty(temps))
102    {
103    comm.CommandText = temps;
104    comm.ExecuteNonQuery();
105    }
106   }
107   tran.Commit();
108   return true;
109   }
110  catch(Exception ex)
111   {
112   tran.Rollback();
113   errorMsg = ex.Message;
114   return false;
115   }
116  finally
117   {
118   conn.Close();
119   }
120  }
121  /// <summary>
122  /// 从sql脚本文件执行
123  /// </summary>
124  /// <param name="sqlFilePath">sql脚本文件的路径</param>
125  /// <returns></returns>
126  public bool ExecuteSqlByFile(string sqlFilePath,ref string errorMsg)
127  {
128  if(!File.Exists(sqlFilePath))
129   {
130   throw new FileNotFoundException("未找到该sql脚本,请检查路径是否错误");
131   }
132 
133  string sourceSql = new StreamReader(sqlFilePath).ReadToEnd();
134  string[] sqls = serializeSql(sourceSql);
135   SetConnOpen();
136  OleDbTransaction tran = conn.BeginTransaction();
137  try
138   {
139   comm = new OleDbCommand();
140   comm.Transaction = tran;
141   comm.Connection = conn;
142   foreach (string s in sqls)
143   {
144   var temps = s.Trim().Replace("
", "");
145   if (!string.IsNullOrEmpty(temps))
146    {
147    comm.CommandText = temps;
148    comm.ExecuteNonQuery();
149    }
150   }
151   tran.Commit();
152   return true;
153   }
154  catch (Exception ex)
155   {
156   tran.Rollback();
157   errorMsg = ex.Message;
158   return false;
159   }
160  finally
161   {
162   conn.Close();
163   }
164  }
165  /// <summary>
166  /// 将sql脚本进行序列化
167  /// </summary>
168  /// <param name="sql">sql脚本</param>
169  /// <returns></returns>
170  private string[] serializeSql(string sql)
171  {
172  string[] ss = sql.Split(new string[1] { "/*go*/" }, StringSplitOptions.RemoveEmptyEntries);
173  return ss;
174  }
175  /// <summary>
176  /// 获取打开的连接
177  /// </summary>
178  private void SetConnOpen()
179  {
180  if (this.conn.State != ConnectionState.Open)
181   {
182   this.conn.Open();
183   }
184  }
185  }
186 }
AccessUtils.cs

AccessTool.cs 这个是对AccessUtils类的封装,提供了更加友好的方法。

技术分享
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace AccessRuntime.Bin
 7 {
 8 /// <summary>
 9 /// Access工具
 10 /// 注意:语句之间使用 /*go*/ 进行分割
 11 /// </summary>
 12 public static class AccessTool
 13  {
 14  /// <summary>
 15  /// 在Access数据库中执行sql语句
 16  /// </summary>
 17  /// <param name="sql">sql脚本</param>
 18  /// <param name="pwd">数据库密码(如果无密码则不填写此参数)</param>
 19  /// <returns>执行结果</returns>
 20  public static bool ExecuteSql(string sql,string pwd = null)
 21  {
 22  AccessUtils au = null;
 23  if (string.IsNullOrEmpty(pwd)) {
 24   au = new AccessUtils();
 25   string msg = null;
 26   if(au.ExecuteSql(sql, ref msg))
 27   {
 28   return true;
 29   }
 30   else
 31   {
 32   throw new AccessRuntimeException(msg);
 33   }
 34   }
 35  else
 36   {
 37   au = new AccessUtils(pwd, null);
 38   string msg = null;
 39   if(au.ExecuteSql(sql,ref msg))
 40   {
 41   return true;
 42   }
 43   else
 44   {
 45   throw new AccessRuntimeException(msg);
 46   }
 47   }
 48  
 49  }
 50 
 51  /// <summary>
 52  /// 在Access数据库中执行sql脚本
 53  /// </summary>
 54  /// <param name="sqlpath">sql脚本路径</param>
 55  /// <param name="pwd">数据库密码(如果无密码则不填写此参数)</param>
 56  /// <returns>执行结果</returns>
 57  public static bool ExecuteSqlByFile(string sqlpath,string pwd = null)
 58  {
 59  AccessUtils au = null;
 60  //判断密码是否填写
 61  if (string.IsNullOrEmpty(pwd))
 62   {
 63   au = new AccessUtils();
 64   string msg = null;
 65   if (au.ExecuteSqlByFile(sqlpath, ref msg))
 66   {
 67   return true;
 68   }
 69   else
 70   {
 71   throw new AccessRuntimeException(msg);
 72   }
 73   }
 74  else
 75   {
 76   au = new AccessUtils(pwd, null);
 77   string msg = null;
 78   if (au.ExecuteSqlByFile(sqlpath, ref msg))
 79   {
 80   return true;
 81   }
 82   else
 83   {
 84   throw new AccessRuntimeException(msg);
 85   }
 86   }
 87  }
 88 
 89  /// <summary>
 90  /// 在指定Access数据库中执行sql语句
 91  /// </summary>
 92  /// <param name="sql">sql脚本</param>
 93  /// <param name="dbpath">数据库所在路径</param>
 94  /// <param name="pwd">执行结果</param>
 95  /// <returns></returns>
 96  public static bool OnExecuteSql(string sql,string dbpath,string pwd = null)
 97  {
 98  AccessUtils au = null;
 99  if (string.IsNullOrEmpty(pwd))
100   {
101   au = new AccessUtils(dbpath);
102   string msg = null;
103   if (au.ExecuteSql(sql, ref msg))
104   {
105   return true;
106   }
107   else
108   {
109   throw new AccessRuntimeException(msg);
110   }
111   }
112  else
113   {
114   au = new AccessUtils(pwd, dbpath);
115   string msg = null;
116   if (au.ExecuteSql(sql, ref msg))
117   {
118   return true;
119   }
120   else
121   {
122   throw new AccessRuntimeException(msg);
123   }
124   }
125 
126  }
127 
128  /// <summary>
129  /// 在指定Access数据库中执行sql语句
130  /// </summary>
131  /// <param name="sqlpath">sql脚本路径</param>
132  /// <param name="dbpath">数据库所在路径</param>
133  /// <param name="pwd">执行结果</param>
134  /// <returns></returns>
135  public static bool OnExecuteSqlByFile(string sqlpath, string dbpath, string pwd = null)
136  {
137  AccessUtils au = null;
138  //判断密码是否填写
139  if (string.IsNullOrEmpty(pwd))
140   {
141   au = new AccessUtils(dbpath);
142   string msg = null;
143   if (au.ExecuteSqlByFile(sqlpath, ref msg))
144   {
145   return true;
146   }
147   else
148   {
149   throw new AccessRuntimeException(msg);
150   }
151   }
152  else
153   {
154   au = new AccessUtils(pwd, dbpath);
155   string msg = null;
156   if (au.ExecuteSqlByFile(sqlpath, ref msg))
157   {
158   return true;
159   }
160   else
161   {
162   throw new AccessRuntimeException(msg);
163   }
164   }
165  }
166  }
167 }
AccessToo.cs

本工具中还定义了两个自定义的异常类:AccessRuntimeException.cs,ConnectionStringElementNotFindException.cs,下付代码:

技术分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AccessRuntime.Bin
{
 /// <summary>
 /// AccessRuntime异常
 /// </summary>
 public class AccessRuntimeException:Exception
 {
 /// <summary>
 /// 配置文件节点未找到
 /// </summary>
 public AccessRuntimeException()
 {

 }
 /// <summary>
 /// 配置文件节点未找到
 /// </summary>
 /// <param name="message">异常信息</param>
 public AccessRuntimeException(string message):base(message)
 {

 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message">异常信息</param>
 
 var cpro_id = "u6292429";
 



                                        

热心网友 时间:2022-05-02 06:52

Net:它不是语言,而是微软推出的开发平台,在这个平台上可以使用VB、C#、C++、Java等语言编写程序。

C#是微软公司发布的一种面向对象的、运于.NET Framework之上的高级程序设计语言。它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过 程。

C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
社保到期了还有时效吗 2023年河北退休人员认证时间 社保待遇资格认证有效期怎么认证 ...语法How long does it take you to get to school? 此句中“it... 海信电视初始设置后无信号 设置海信电视恢复出厂设置搜不到电视信号 海信一族电视大锅恢复设置没信号怎么? 如何用c程序读取txt文件? 成都膨胀螺丝型号 云南农信个人如何开通手机银行 httppost 302错误怎么解决 java 什么是 302 found ? 如果返回页面是302,怎么办 网站出现“302 Moved Temporarily”该怎么办 “302 Found”是什么意思? 晚上做梦,梦到一个白胡子老头,自称是我爷爷。穿着朴素,一身深蓝色衣服,慈眉善目,胡须和头发都是白的 梦见自己长胡子,眉毛左边长长,眉毛旁边皮肤成白色掉皮做何解? 梦见相识的人白了眉毛 梦见眉毛白了一点点 我今夜梦见我的前面头发,眉毛和脸上的汗毛都白了,我感到非常的难受,还梦见了,我开车开的特别熟练,有 梦见别人的男人眉毛变成白的周公解梦大全? 梦到老公头发眉毛都白了,而且上身爬满蚂蚁 梦见男人眉毛变成白的还在哭? 梦见自己一儿子眉毛,胡子都白啦,这样的梦好吗我夜里做梦梦见儿子眉毛,胡子都白啦,我还让他刮掉它 梦到自己的胡子眉毛变成花白怎么回事 梦见老公的眉毛变白有什么说法? 您好请问华为nova3掉水里,维修要多少钱呢。 手机掉水里,捞出来后可以正常使用,但是屏幕边框有些许泛白,该如何处理?手机型号为华为nova3 电力工业部副部长用英语怎么翻译? 主管工程师、制造部副部长怎样译成英文 苹果11信号差如何解决 两张中信银行信用卡,还款到账后额度全部加在一张额度大的卡? iphone6为什么录制视频会有噪音 cfa一级到底难不难 CFA一级难度有多高? CFA一级难度如何? CFA一级考试难度有多大 CFA一级该如何学习啊 如何通过CFA一级考试? 海南小叶_竹黑龙江能饲养吗 ug多轴编程的关键点在什么地方 湖北省现在气温与海南比哪最热? UG 可不可以做机器人多旋转轴编程及后处理 海南的气温和重庆的气温有可比性吗 Ug与mastercam在编程方面哪个更实用他们的区别是什么 海南琼海常年平均降水与气温是多少 海南历史冬天最低温度是多少? 今天天气多少度? .Net和C#是什么?与C语言有什么区别? word里面怎么画分支符号,除了用画笔