直接创建WEB项目即可;

  1. public class Startup
  2. {
  3. //startup.cs是站点启动时具体做了哪些事情,主要是开启了一个mvc服务。
  4. public Startup(IConfiguration configuration)
  5. {
  6. Configuration = configuration;
  7. }
  8.  
  9. public IConfiguration Configuration { get; }
  10.  
  11. // This method gets called by the runtime. Use this method to add services to the container.
  12. public void ConfigureServices(IServiceCollection services)
  13. {
  14. services.Configure<CookiePolicyOptions>(options =>
  15. {
  16. // This lambda determines whether user consent for non-essential cookies is needed for a given request.
  17. options.CheckConsentNeeded = context => true;
  18. options.MinimumSameSitePolicy = SameSiteMode.None;
  19. });
  20.  
  21. services.AddSession();
  22.  
  23. services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
  24. }
  25.  
  26. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  27. public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  28. {
  29. if (env.IsDevelopment())
  30. {
  31. app.UseDeveloperExceptionPage();
  32. }
  33. else
  34. {
  35. app.UseExceptionHandler("/Error");
  36. app.UseHsts();
  37. }
  38.  
  39. app.UseHttpsRedirection();
  40. app.UseStaticFiles(); //如果不添加将导致样式文件不能被客户端加载
  41. app.UseCookiePolicy();
  42. app.UseSession();
  43.  
  44. app.UseMvc(routes =>
  45. {
  46. routes.MapRoute(
  47. name: "default",
  48. template: "{controller=Home}/{action=Index}/{id?}");
  49. }
  50. );
  51. }
  52. }

创建一个DB类用于查数据:

  1. public class DB : DbContext
  2. {
  3. public DB()
  4. { //如果没有数据库,自动创建,有了什么都不干
  5. Database.EnsureCreated();
  6. }
  7. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  8. { //对于这个上下文重写此方法以配置要使用的数据库(和其他选项)。对于上下文的每个实例调用此方法创建。
  9.  
  10. //加载appsetting.json
  11. IConfiguration configuration = new ConfigurationBuilder()
  12. .SetBasePath(Directory.GetCurrentDirectory())
  13. .AddJsonFile("appsettings.json").Build();
  14.  
  15. string connectionString = configuration["DBSetting:ConnectString"];
  16. optionsBuilder.UseSqlServer(connectionString);
  17.  
  18. base.OnConfiguring(optionsBuilder);
  19. }
  20.  
  21. public DbSet<studen> studen { set; get; }
  22.  
  23. public DbSet<xx> xx { set; get; }
  24.  
  25. }
  26. //原文:https://blog.csdn.net/weixin_41609327/article/details/80821798

appsettings.json

  1. {
  2. "Logging": {
  3. "LogLevel": {
  4. "Default": "Warning"
  5. }
  6. },
  7. "DBSetting": {
  8. "ConnectString": "server=.;database=test_core;uid=sa;pwd=123"
  9.  
  10. },
  11. "AllowedHosts": "*"
  12. }

有DB类肯定少不了help类

  1. /// 此类为抽象类,
  2. /// 不允许实例化,在应用时直接调用即可
  3. /// </summary>
  4. // abstract 抽象类标识
  5. public abstract class SqlHelper
  6. {
  7. //加载appsetting.json
  8. static IConfiguration configuration = new ConfigurationBuilder()
  9. .SetBasePath(Directory.GetCurrentDirectory())
  10. .AddJsonFile("appsettings.json").Build();
  11.  
  12. /// <summary>
  13. /// 数据库连接字符串
  14. /// </summary>
  15. private static readonly string connectionString = configuration["DBSetting:ConnectString"]; //获取DBSetting下的ConnectString值
  16. private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
  17.  
  18. #region//ExecteNonQuery方法
  19.  
  20. /// <summary>
  21. ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
  22. /// 使用参数数组形式提供参数列表
  23. /// </summary>
  24. /// <param name="connectionString">一个有效的数据库连接字符串</param>
  25. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  26. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  27. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  28. /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
  29. public static int ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  30. {
  31. // =执行SQL语句
  32. SqlCommand cmd = new SqlCommand();
  33. using (SqlConnection conn = new SqlConnection(connectionString))
  34. {
  35. //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
  36. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  37. int val = cmd.ExecuteNonQuery();
  38. //清空SqlCommand中的参数列表
  39. cmd.Parameters.Clear();
  40. return val;
  41. }
  42. }
  43.  
  44. /// <summary>
  45. ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
  46. /// 使用参数数组形式提供参数列表
  47. /// </summary>
  48. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  49. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  50. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  51. /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
  52. public static int ExecteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  53. {
  54. return ExecteNonQuery(connectionString, cmdType, cmdText, commandParameters);
  55. }
  56.  
  57. /// <summary>
  58. ///存储过程专用
  59. /// </summary>
  60. /// <param name="cmdText">存储过程的名字</param>
  61. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  62. /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
  63. public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters)
  64. {
  65. return ExecteNonQuery(CommandType.StoredProcedure, cmdText, commandParameters);
  66. }
  67.  
  68. /// <summary>
  69. ///Sql语句专用
  70. /// </summary>
  71. /// <param name="cmdText">T_Sql语句</param>
  72. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  73. /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>
  74. public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters)
  75. {
  76. return ExecteNonQuery(CommandType.Text, cmdText, commandParameters);
  77. }
  78.  
  79. #endregion
  80. #region//GetTable方法
  81.  
  82. /// <summary>
  83. /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接
  84. /// 使用参数数组提供参数
  85. /// </summary>
  86. /// <param name="connecttionString">一个现有的数据库连接</param>
  87. /// <param name="cmdTye">SqlCommand命令类型</param>
  88. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  89. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  90. /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
  91. public static DataTableCollection GetTable(string connecttionString, CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
  92. {
  93. SqlCommand cmd = new SqlCommand();
  94. DataSet ds = new DataSet();
  95. using (SqlConnection conn = new SqlConnection(connecttionString))
  96. {
  97. PrepareCommand(cmd, conn, null, cmdTye, cmdText, commandParameters);
  98. SqlDataAdapter adapter = new SqlDataAdapter();
  99. adapter.SelectCommand = cmd;
  100. adapter.Fill(ds);
  101. }
  102. DataTableCollection table = ds.Tables;
  103. return table;
  104. }
  105.  
  106. /// <summary>
  107. /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接
  108. /// 使用参数数组提供参数
  109. /// </summary>
  110. /// <param name="cmdTye">SqlCommand命令类型</param>
  111. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  112. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  113. /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
  114. public static DataTableCollection GetTable(CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
  115. {
  116. return GetTable(connectionString, cmdTye, cmdText, commandParameters);
  117. }
  118.  
  119. /// <summary>
  120. /// 执行存储过程专用
  121. /// </summary>
  122. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  123. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  124. /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
  125. public static DataTableCollection GetTableProducts(string cmdText, SqlParameter[] commandParameters)
  126. {
  127. return GetTable(CommandType.StoredProcedure, cmdText, commandParameters);
  128. }
  129.  
  130. /// <summary>
  131. /// 执行Sql语句专用
  132. /// </summary>
  133. /// <param name="cmdText"> T-SQL 语句</param>
  134. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  135. /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>
  136. public static DataTableCollection GetTableText(string cmdText, SqlParameter[] commandParameters)
  137. {
  138. return GetTable(CommandType.Text, cmdText, commandParameters);
  139. }
  140. #endregion
  141.  
  142. /// <summary>
  143. /// 为执行命令准备参数
  144. /// </summary>
  145. /// <param name="cmd">SqlCommand 命令</param>
  146. /// <param name="conn">已经存在的数据库连接</param>
  147. /// <param name="trans">数据库事物处理</param>
  148. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  149. /// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>
  150. /// <param name="cmdParms">返回带参数的命令</param>
  151. private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
  152. {
  153. //判断数据库连接状态
  154. if (conn.State != ConnectionState.Open)
  155. conn.Open();
  156. cmd.Connection = conn;
  157. cmd.CommandText = cmdText;
  158. //判断是否需要事物处理
  159. if (trans != null)
  160. cmd.Transaction = trans;
  161. cmd.CommandType = cmdType;
  162. if (cmdParms != null)
  163. {
  164. foreach (SqlParameter parm in cmdParms)
  165. cmd.Parameters.Add(parm);
  166. }
  167. }
  168.  
  169. /// <summary>
  170. /// Execute a SqlCommand that returns a resultset against the database specified in the connection string
  171. /// using the provided parameters.
  172. /// </summary>
  173. /// <param name="connectionString">一个有效的数据库连接字符串</param>
  174. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  175. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  176. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  177. /// <returns>A SqlDataReader containing the results</returns>
  178. public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  179. {
  180. SqlCommand cmd = new SqlCommand();
  181. SqlConnection conn = new SqlConnection(connectionString);
  182. // we use a try/catch here because if the method throws an exception we want to
  183. // close the connection throw code, because no datareader will exist, hence the
  184. // commandBehaviour.CloseConnection will not work
  185. try
  186. {
  187. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  188. SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  189. cmd.Parameters.Clear();
  190. return rdr;
  191. }
  192. catch
  193. {
  194. conn.Close();
  195. throw;
  196. }
  197. }
  198. #region//ExecuteDataSet方法
  199.  
  200. /// <summary>
  201. /// return a dataset
  202. /// </summary>
  203. /// <param name="connectionString">一个有效的数据库连接字符串</param>
  204. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  205. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  206. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  207. /// <returns>return a dataset</returns>
  208. public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  209. {
  210. SqlConnection conn = new SqlConnection(connectionString);
  211. SqlCommand cmd = new SqlCommand();
  212. try
  213. {
  214. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  215. SqlDataAdapter da = new SqlDataAdapter();
  216. DataSet ds = new DataSet();
  217. da.SelectCommand = cmd;
  218. da.Fill(ds);
  219. return ds;
  220. }
  221. catch
  222. {
  223. conn.Close();
  224. throw;
  225. }
  226. }
  227.  
  228. /// <summary>
  229. /// 返回一个DataSet
  230. /// </summary>
  231. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  232. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  233. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  234. /// <returns>return a dataset</returns>
  235. public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  236. {
  237. return ExecuteDataSet(connectionString, cmdType, cmdText, commandParameters);
  238. }
  239.  
  240. /// <summary>
  241. /// 返回一个DataSet
  242. /// </summary>
  243. /// <param name="cmdText">存储过程的名字</param>
  244. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  245. /// <returns>return a dataset</returns>
  246. public static DataSet ExecuteDataSetProducts(string cmdText, params SqlParameter[] commandParameters)
  247. {
  248. return ExecuteDataSet(connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
  249. }
  250.  
  251. /// <summary>
  252. /// 返回一个DataSet
  253. /// </summary>
  254.  
  255. /// <param name="cmdText">T-SQL 语句</param>
  256. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  257. /// <returns>return a dataset</returns>
  258. public static DataSet ExecuteDataSetText(string cmdText, params SqlParameter[] commandParameters)
  259. {
  260. return ExecuteDataSet(connectionString, CommandType.Text, cmdText, commandParameters);
  261. }
  262.  
  263. public static DataView ExecuteDataSet(string connectionString, string sortExpression, string direction, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  264. {
  265. SqlConnection conn = new SqlConnection(connectionString);
  266. SqlCommand cmd = new SqlCommand();
  267. try
  268. {
  269. PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
  270. SqlDataAdapter da = new SqlDataAdapter();
  271. DataSet ds = new DataSet();
  272. da.SelectCommand = cmd;
  273. da.Fill(ds);
  274. DataView dv = ds.Tables[].DefaultView;
  275. dv.Sort = sortExpression + " " + direction;
  276. return dv;
  277. }
  278. catch
  279. {
  280. conn.Close();
  281. throw;
  282. }
  283. }
  284. #endregion
  285.  
  286. #region // ExecuteScalar方法
  287.  
  288. /// <summary>
  289. /// 返回第一行的第一列
  290. /// </summary>
  291. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  292. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  293. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  294. /// <returns>返回一个对象</returns>
  295. public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  296. {
  297. return ExecuteScalar(SqlHelper.connectionString, cmdType, cmdText, commandParameters);
  298. }
  299.  
  300. /// <summary>
  301. /// 返回第一行的第一列存储过程专用
  302. /// </summary>
  303. /// <param name="cmdText">存储过程的名字</param>
  304. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  305. /// <returns>返回一个对象</returns>
  306. public static object ExecuteScalarProducts(string cmdText, params SqlParameter[] commandParameters)
  307. {
  308. return ExecuteScalar(SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
  309. }
  310.  
  311. /// <summary>
  312. /// 返回第一行的第一列Sql语句专用
  313. /// </summary>
  314. /// <param name="cmdText">者 T-SQL 语句</param>
  315. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  316. /// <returns>返回一个对象</returns>
  317. public static object ExecuteScalarText(string cmdText, params SqlParameter[] commandParameters)
  318. {
  319. return ExecuteScalar(SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);
  320. }
  321.  
  322. /// <summary>
  323. /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string
  324. /// using the provided parameters.
  325. /// </summary>
  326. /// <remarks>
  327. /// e.g.:
  328. /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
  329. /// </remarks>
  330. /// <param name="connectionString">一个有效的数据库连接字符串</param>
  331. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  332. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  333. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  334. /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
  335. public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  336. {
  337. SqlCommand cmd = new SqlCommand();
  338.  
  339. using (SqlConnection connection = new SqlConnection(connectionString))
  340. {
  341. PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
  342. object val = cmd.ExecuteScalar();
  343. cmd.Parameters.Clear();
  344. return val;
  345. }
  346. }
  347.  
  348. /// <summary>
  349. /// Execute a SqlCommand that returns the first column of the first record against an existing database connection
  350. /// using the provided parameters.
  351. /// </summary>
  352. /// <remarks>
  353. /// e.g.:
  354. /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
  355. /// </remarks>
  356. /// <param name="connectionString">一个有效的数据库连接字符串</param>
  357. /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>
  358. /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>
  359. /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
  360. /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>
  361. public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
  362. {
  363. SqlCommand cmd = new SqlCommand();
  364. PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
  365. object val = cmd.ExecuteScalar();
  366. cmd.Parameters.Clear();
  367. return val;
  368. }
  369.  
  370. #endregion
  371.  
  372. /// <summary>
  373. /// add parameter array to the cache
  374. /// </summary>
  375. /// <param name="cacheKey">Key to the parameter cache</param>
  376. /// <param name="cmdParms">an array of SqlParamters to be cached</param>
  377. public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
  378. {
  379. parmCache[cacheKey] = commandParameters;
  380. }
  381.  
  382. /// <summary>
  383. /// Retrieve cached parameters
  384. /// </summary>
  385. /// <param name="cacheKey">key used to lookup parameters</param>
  386. /// <returns>Cached SqlParamters array</returns>
  387. public static SqlParameter[] GetCachedParameters(string cacheKey)
  388. {
  389. SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
  390. if (cachedParms == null)
  391. return null;
  392. SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
  393. for (int i = , j = cachedParms.Length; i < j; i++)
  394. clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
  395. return clonedParms;
  396. }
  397. /// <summary>
  398. /// 检查是否存在
  399. /// </summary>
  400. /// <param name="strSql">Sql语句</param>
  401. /// <returns>bool结果</returns>
  402. public static bool Exists(string strSql)
  403. {
  404. int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, null));
  405. if (cmdresult == )
  406. {
  407. return false;
  408. }
  409. else
  410. {
  411. return true;
  412. }
  413. }
  414.  
  415. /// <summary>
  416. /// 检查是否存在
  417. /// </summary>
  418. /// <param name="strSql">Sql语句</param>
  419. /// <param name="cmdParms">参数</param>
  420. /// <returns>bool结果</returns>
  421. public static bool Exists(string strSql, params SqlParameter[] cmdParms)
  422. {
  423. int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, cmdParms));
  424. if (cmdresult == )
  425. {
  426. return false;
  427. }
  428. else
  429. {
  430. return true;
  431. }
  432. }
  433.  
  434. //原文:https://blog.csdn.net/weixin_41609327/article/details/80786764
  435. }

SqlHelp

  1. public DataTable GetStuden()
  2. {
  3. string sql = "select * from studen;";
  4. var data = SqlHelper.GetTable(CommandType.Text,sql,new SqlParameter[] { });
  5. return data[];
  6. }

DAL

一个保存类:

  1. public static class save
  2. {
  3.  
  4. public static void JsonWrite(string configpath,string str,out string name,out string filename)
  5. {
  6. //string configpath = System.AppDomain.CurrentDomain.BaseDirectory + "/json/";
  7.  
  8. configpath = configpath + "/json/";
  9.  
  10. if (!Directory.Exists(configpath))//如果目录不存在就创建
  11. {
  12. Directory.CreateDirectory(configpath);
  13. }
  14. filename = configpath + "/";
  15.  
  16. name = "Json_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_ffff") + ".json";//用日期对文件命名;
  17.  
  18. filename = filename + name; // 一个 文件的 绝对路径 out 出去 给使用
  19. //创建或打开文件, AppendText 向文件末尾追加记录
  20. StreamWriter mySw = File.AppendText(filename); // 查找是否有该路径的文件 并打开
  21. string a = str;
  22. mySw.WriteLine(a); // 写入某数据
  23.  
  24. //关闭文件
  25. mySw.Close(); // 关闭写入流
  26. }
  27. }

保存文件类

到控制器下载了。

  1. public IActionResult Json()
  2. {
  3. using (var db = new DB())
  4. {
  5. List<studen> list = db.studen.GroupBy(b=>new { b.Id,b.Name }).Select(b => new studen
  6. {
  7. Id = b.Key.Id,
  8. Name = b.Key.Name
  9. }).ToList();
  10. db.studen.ToList();
  11.  
  12. var xx = db.xx.GroupBy(x => new { x.id }).Select(v => new xx
  13. {
  14. id=v.Key.id,
  15. name= v.Sum(x => x.name)
  16. }).ToList();
  17. string json = "[";
  18. foreach (var item in list)
  19. {
  20. json += "{\"id\":\""+item.Id+"\",\"name\":\""+item.Name+"\" },";
  21. }
  22. json = json.Substring(, json.Length - ); //删除最后一个逗号,
  23. json += "]";
  24. //string root = Directory.GetParent(AppContext.BaseDirectory).Parent.Parent.Parent.FullName; //Parent退到上个目录
  25. string contentRootPath = _hostingEnvironment.ContentRootPath; // .net core获取基目录的用法
  26. string name; // out 出来的是路径加上json文件名
  27. string file; // 绝对路径
  28. save.JsonWrite(contentRootPath, json.ToString(),out name, out file); //写入文件 并保存
  29.  
  30. HttpContext.Session.SetString("file",file); // core 的 Session 就得这么用 还得using Microsoft.AspNetCore.Http;
  31.  
  32. // 读取某json文件
  33. string str = "";
  34.  
  35. using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) // 获取文件流
  36. {
  37. using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("utf-8"))) // 读取文件流
  38. {
  39. str = sr.ReadToEnd().ToString(); // 获取 文件的 全部 转 字符串
  40. sr.Close();
  41. }
  42. fs.Close();
  43. }
  44.  
  45. }
  46. // new filestram 须文件的绝对路径 获取文件流 输入出的文件格式 输出的文件名称
  47. return File(new FileStream(HttpContext.Session.GetString("file"), FileMode.Open), "application/octet-stream", $"导出测试{DateTime.Now.ToString("yyyyMMddHHmmss")}.json");
  48.  
  49. if (System.IO.File.Exists("文件的绝对路径"))
  50. { //删除文件
  51. System.IO.File.Delete("文件的绝对路径");
  52. }
  53. }
  54.  
  55. //public IActionResult download()
  56. //{
  57. // return File(new FileStream(HttpContext.Session.GetString("file"), FileMode.Open), "application/octet-stream", $"导出测试{DateTime.Now.ToString("yyyyMMddHHmmss")}.json");
  58. //}

.NET Core随笔把数据库数据查出来转JSON并输出的更多相关文章

  1. 使用 Solr 创建 Core 并导入数据库数据

    1. 输入 http://localhost:8080/solr/index.html 来到 Solr 的管理界面: 2. 点击左侧 Core Admin --> Add Core,然后输入自己 ...

  2. EasyUI_tree根据数据库数据生成树形结构JSON格式

    @Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...

  3. hive 将hive表数据查询出来转为json对象和json数组输出

    一.将hive表数据查询出来转为json对象输出 1.将查询出来的数据转为一行一行,并指定分割符的数据 2.使用UDF函数,将每一行数据作为string传入UDF函数中转换为json再返回 1.准备数 ...

  4. 第二百七十七节,MySQL数据库-数据表、以及列的增删改查

    MySQL数据库-数据表.以及列的增删改查 1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNO ...

  5. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  6. solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  7. ASP.NET Core使用EF Core操作MySql数据库

    ASP.NET Core操作MySql数据库, 这样整套环境都可以布署在Linux上 使用微软的 Microsoft.EntityFrameworkCore(2.1.4) 和MySql出的 MySql ...

  8. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  9. jmeter 性能测试 JDBC Request (查询数据库获取数据库数据) 的使用

    JDBC Request 这个Sampler可以向数据库发送一个jdbc请求(sql语句),并获取返回的数据库数据进行操作.它经常需要和JDBC Connection Configuration配置原 ...

随机推荐

  1. 关于window.getSelection

    window.getSelection(),返回一个Selection对象,表示用户选择的文本范围或光标的当前位置. selection对象先来看下面两个selection结果:selection对象 ...

  2. Fluent设置充分发展湍流入口(利用profile)

    计算模型: 物性参数为: 密度:100kg/m3 粘度系数:0.003333kg/(m·s) 原视频下载地址: https://pan.baidu.com/s/1W3n_K-dZCVMF7M63wV2 ...

  3. 一周 GitHub 开源项目推荐:阿里、腾讯、陌陌、bilibili……

    阅读本文大概需要 2.8 分钟. 陌陌风控系统正式开源 陌陌风控系统静态规则引擎,零基础简易便捷的配置多种复杂规则,实时高效管控用户异常行为. GitHub 地址 https://github.com ...

  4. Linux 删除文件未释放空间问题处理,下清空或删除大文件

    linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...

  5. getaddrinfo工作原理分析

    getaddrinfo工作原理分析 将域名解析成ip地址是所有涉及网络通讯功能程序的基本步骤之一,常用的两个接口是gethostbyname和getaddrinfo,而后者是Posix标准推荐在新应用 ...

  6. python confluent kafka客户端配置kerberos认证

    kafka的认证方式一般有如下3种: 1. SASL/GSSAPI  从版本0.9.0.0开始支持 2. SASL/PLAIN   从版本0.10.0.0开始支持 3. SASL/SCRAM-SHA- ...

  7. HIVE出现Read past end of RLE integer from compressed stream Stream for column 1 kind LENGTH position: 359 length: 359 range: 0错误

    错误日志 Diagnostic Messages for this Task: Error: java.io.IOException: java.io.IOException: java.io.EOF ...

  8. MQTT研究之EMQ:【CoAP协议的ECC证书研究】

    今天研究的内容,是CoAP这个协议在EMQ消息队列的支持,CoAP是一个受限资源的协议,基于UDP实现的多用于物联网环境的通信协议.相关介绍不多说,可以看RFC. CoAP协议下,基于DTLS通信,同 ...

  9. 【Spring Boot学习之十一】整合mongoDB

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 参考: SpringBoot+Mongodb的使用

  10. js 强制换行及 单行文字溢出时出现省略号

    /*强制换行*/.f-break {word-break:break-all; /*支持IE,chrome,FF不支持*/ word-wrap:break-word;/*支持IE,chrome,FF* ...