首先 nihaide11这位仁兄不要误导 net不是一门语言 也不是一门技术 net是一个框架 在net框架下有很多种语言 而且不论哪种语言 它们对应的数据库也不是一定的 java同样可以使用mysql,msSql,access,oracle这些数据库 不同的数据库 只是它们本身做的工作不同而已
mysql是开源的 但承载的性能和吞吐量比不上msSql和oracle
msSql是微软开发的 在世界范围中应用十分广泛 其好坏由不得我们来评价
access是轻量级 文件形式的数据库 只针对小型软件的应用
oracle是当前最强大的数据库 超大型的工程 和十分复杂的工程 往往都会选择oracle
Q: net是什么呢,听说是用来连接静态页面和数据库之间关系的语言?
A: net是由微软开发的一个框架集 Visual Stutio就是针对这个框架集的API
net中的adonet是用来进行数据库的读写等交互 而net与静态页这种概念没有任何关系
net主要包括VBnet C#net J#net等等语系 亦集成了C++等语系 不过net中最常用也最强大的语言是C#
Q: net与ASP PHP 这些有什么关系,是各用于不同的地方,相互协作吗。
A: 没有任何关系 net是一个框架 ASP和PHP是web技术 可以说net中的aspnet与asp和php是对等的关系 但在性质上又有很大的区别 aspnet是事件驱动机制的 aspnet可以由C#或者VBnet语系来编写 而C#和VBnet都是面向对象的语言 asp与php是轻量级的 aspnet更为先进 而aspnet是被包含在net框架下的 net asp php 不是一种东西 所以更提不到相互协作
Q: net与sql的关系
A: 可以说没有任何关系 net不是语言 而是一种框架 net不依赖于数据库 并且adonet提供了多种数据连接机制 net制作的程序可以使用mysql,sql,access,oracle 甚至是excel来作为数据库
不过两者之间也存在另一层关系 如果LZ使用过sql2005的话 一定会发现sql2005在安装时需要安装一个插件 叫framework20 这个插件是为net框架语言开发的程序准备的 也就是说 sql2005有一部分功能是用 net开发的
最后补充一下 ASP+SQL 我想应该是 ASPNET+SQL吧
javaDB其实就是Derby,它并不是一个新的数据库产品,它是由IBM捐献给Apache的DB项目的一个纯Java数据库,JDK60里面带的这个Derby的版本是 10217,支持存储过程和触发器;有两种运行模式,一种是作为嵌入式数据库,另一种是作为网络数据库,前者的数据库服务器和客户端都在同一个 JVM里面运行,后者允许数据库服务器端和客户端不在同一个JVM里面,而且允许这两者在不同的物理机器上值得注意的是JDK6里面的这个Derby支持JDK6的新特性JDBC 40规范(JSR 221),现在我们如果要练习JDBC的用法,没有必要单独装一个数据库产品了,直接用Derby就行
1、本身没有 *** 作界面,可以用第三方工具来管理(也就是你说的 *** 作界面),Aqua Data Studio 具备管理功能的用于 Apache Derby 关系数据库的管理工具和数据库查询工具。直观管理功能让用户能够浏览和修改数据库结构,包括架构对象和数据库存储,以及维护数据库安全。集成查询工具让您能够迅速创建、编辑和执行 SQL 查询与脚本。Aqua Data Studio 进一步提供导入与导出工具,从而轻松地将数据移入和移出不同的数据格式及 Apache Derby 数据库。集成在这些工具内的是库浏览器 (Repository Browser),拥有 CVS 和 Subversion (SVN) 的完整来源控制客户端。
2、两者的区别,简单的说,就是javaDB是一个简化轻量级数据库,适合小型系统的小规模测试用,完全可以跑在内存里的数据库,它只有3M大小,而MySQL则是可以应用部署大型系统的数据库,功能更多更全,也更稳定,是用范围更广。
3、下面是个使用derby的简单例子:
首先导入JAR包:derbyjar,如果你装的是JDK6,在C:\Program Files\Sun\JavaDB\lib目录下就可以找到
然后就要创建数据库了:
代码
private Connection getConnection() throws SQLException {
Connection connection = DriverManager
getConnection("jdbc:derby:userDB;create=true;user=test;password=test");
connectionsetAutoCommit(false);
return connection;
}
其中userDB是要连接数据库的名字,create=true表示如果该数据库不存在,则创建该数据库,如果数据库存在,则用用户user=test;密码password=test连接数据库
有了数据库,接下来该建表了:
代码
private void createTable(Connection connection) throws SQLException {
Statement statement = connectioncreateStatement();
String sql = "create table USERS("
+ " ID BIGINT not null generated by default as identity,"
+ " USER_NAME VARCHAR(20) not null,"
+ " PASSWORD VARCHAR(20),"
+ " constraint P_KEY_1 primary key (ID))";
statementexecute(sql);
sql = "create unique index USER_NAME_INDEX on USERS ("
+ " USER_NAME ASC)";
statementexecute(sql);
statementclose();
}
创建了 USERS表,包括ID,USER_NAME,PASSWORD三个列,其中ID是主键,其中generated by default as identity 的作用类似sequence,identity是定义自动加一的列,
GENERATED BY ALWAYS AS IDENTITY
GENERATED BY DEFAULT AS IDENTITY
By always和by default是说明生成这个IDENTITY的方式。
By always是完全由系统自动生成。
by default是可以由用户来指定一个值。
编写与USERS表对应的javabean(这个就不多说了),:
代码
public class User implements Serializable {
/
/
private static final long serialVersionUID = 1L;
private Long id;
private String userName;
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
thisid = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
thisuserName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
thispassword = password;
}
}
接下来就可以就数据库进行增删改查的 *** 作了:
插入数据:
代码
private void create(User user) {
Connection connection = null;
try {
connection = thisgetConnection();
PreparedStatement statement = connection
prepareStatement("insert into users (user_name,password) values(,)");
int index = 1;
statementsetString(index++, usergetUserName());
statementsetString(index++, usergetPassword());
statementexecute();
usersetId(thisgetId(connection));
connectioncommit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
代码
private Long getId(Connection connection) throws SQLException {
CallableStatement callableStatement = connection
prepareCall("values identity_val_local()");
ResultSet resultSet = callableStatementexecuteQuery();
resultSetnext();
Long id = resultSetgetLong(1);
resultSetclose();
callableStatementclose();
return id;
}
getId方法是获得系统默认的id值,是通过 identity_val_local()获得的,而函数IDENTITY_VAL_LOCAL()则可以在INSERT语句执行之后,为我们返回刚才系统为id所产生的值感觉还是有点想sequence的curr_val
修改数据:
代码
private void update(User user) {
Connection connection = null;
try {
connection = thisgetConnection();
PreparedStatement statement = connection
prepareStatement("update users set user_name=,password= where id=");
int index = 1;
statementsetString(index++, usergetUserName());
statementsetString(index++, usergetPassword());
statementsetLong(index++, usergetId());
statementexecute();
connectioncommit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
删除数据:
代码
public void delete(Long id) {
Connection connection = null;
try {
connection = thisgetConnection();
PreparedStatement statement = connection
prepareStatement("delete from users where id=");
statementsetLong(1, id);
statementexecute();
connectioncommit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
查询数据:
代码
public User findById(Long id) {
Connection connection = null;
try {
connection = thisgetConnection();
PreparedStatement statement = connection
prepareStatement("select user_name,password from users where id=");
statementsetLong(1, id);
ResultSet resultSet = statementexecuteQuery();
User user = null;
if (resultSetnext()) {
user = new User();
usersetId(id);
usersetUserName(resultSetgetString("user_name"));
usersetPassword(resultSetgetString("password"));
}
resultSetclose();
statementclose();
connectioncommit();
return user;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
我们都知道NET Core是一个可以用来构建现代、可伸缩和高性能的跨平台软件应用程序的通用开发框架。可用于为Windows、Linux和MacOS构建软件应用程序。与其他软件框架不同,NET Core是最通用的框架,可用于构建各种软件,包括Web应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、 游戏 和物联网应用程序。与其他框架不同,NET Core并不局限于单一的编程语言,它支持C#、VBNET、F#、XAML和TypeScript。这些编程语言都是开源的,由独立的社区管理。
NET Core提供了最先进、最成熟和最广泛的类库、公共API、多语言支持和工具。借助于Visual Studio 2019和Visual Studio Code 这些最先进和最现代的开发工具,使得NET Core成为开发人员最高效的平台之一。
NET Core的 历史
NET Core是由Microsoft开发,目前在NET Foundation(一个非营利的开源组织)下进行管理。NET Core是用C#和C++编写的,并采用MIT协议作为开源协议。第一个版本的NET Core 10是在2016年发布的,功能有限。NET Core 20于2017年8月14日发布。在这个版本中发布的两个核心框架是ASPNET Core20和 Entity Framework Core 20。下一个稳定版本NET Core 21和22于2018年5月和12月发布。NET Core的当前版本为300,并且在2019年5月6日发布了第5个预览版。
下表总结了NET Core的主要里程碑:
版本发布日期关键特征/产品NET Core 106/27/2016VisualStudio 2015 Update 3支持的NET Core的初始版本。net Core 1113/7/2017NET Core Tools 10受VisualStudio 2017支持NET Core 208/14/2017VisualStudio 2017 153,ASPNETCore 20,实体框架20NET Core 215/30/2018ASPNET Core 21,EF Core 21NET Core 2212/4/2018ASPNET Core 22,EF Core 22NET Core 30预览33/6/2019通过VisualStudio2019支持ASPNET Core 30、EF Core30、UWP、Windows窗体、WPF。
NET Core的特点
NET Core的主要特性包括开源、跨平台、现代、灵活、轻量级、快速、友好、可共享,以及为未来的软件开发而构建的。
NET Core是免费和开源的
NET Core平台是免费的、开源的。NET Core的源代码托管在Github上。任何开发人员都可以参与到NET Core的开发。有数千名参与NET Core开发的活跃开发人员正在改进特性、添加新特性以及修复bug和问题。
NET Core由一个名为NET Foundation的独立的非营利组织管理。60,000多名开发人员和3,700多家公司正在为NET生态系统做出贡献。
NET Core是免费的,并且采用MIT和Apache协议作为开源协议。对商业十分友好。不像某Java
NET Core是跨平台的
NET Core支持并运行在Windows、MacOS和Linux *** 作系统上。NET Core跨体系结构(包括x64、x86和ARM)是一致的。可以导入相同的程序集和库,并在多个平台上使用。这些程序集和库都可以使用如下的NET语言进行构建,如:C#、VBNET或F#。
NET Core是可共享的
NET Core使用一种用NET Standard编写的一致API模型,这种模型对所有NET应用程序都是通用的。相同的API或库可以与多种语言的多个平台一起使用。
NET Core是现代的
与一些较旧的框架不同,NET Core旨在解决当今的现代需求,包括移动友好、构建一次在任何地方运行、可伸缩和高性能。NET Core旨在构建针对各种设备的应用程序,包括物联网和 游戏 机。
Visual Studio 2019和Visual Studio Code是世界上最先进和最现代的集成开发环境。这两个IDES都支持当今的现代需求,并且专注于干净、速度和生产力。在这里了解有关VisualStudio 2019功能的更多信息:VisualStudio 2019新特性
NET Core是快速的
NET Core 30 是快速的。与NET Framework和NET Core 22及以前的版本相比,NET Core 30的速度很快。NET Core比其他服务器端框架(如Java Servlet和Nodejs)快得多。
根据TechEmpowers发布的一份报告,NET Core比任何其他框架都要快得多。 TechEmpower基准测试通过对多个Web应用程序框架做如下比较:数据库的单表查询,多表查询,文件访问,数据更新,明文和JSON序列化等任务进行比较。
NET Core是轻量级的
NET Core是轻量级的。NET Core可以包含在您的应用程序中,也可以安装在并行用户、机器范围内或服务器上。NET Core可以部署在Docker容器中。
NET Core是友好的
NET Core通过NET Standard与NET Framework,Xamarin和Mono兼容。 NET Core还支持使用各种流行的Web框架和库,如React,Angular和JavaScript。 TypeScript是NET Core和Visual Studio生态系统的关键组件之一。
我们可以使用NET Core构建哪些类型的应用程序?
NET Core是一个通用的软件开发框架。它允许开发人员构建各种软件,包括Web,桌面,移动,云, 游戏 ,物联网等。
NET Core更适合跨平台需求。NET Core应用程序支持在Windows,Linux和macOS上运行。Linux和macOS上也都支持Microsoft流行的开源代码编辑器Visual Studio Code。VS Code支持代码编辑器的现代需求,包括智能提醒和调试。大多数第三方编辑器(如Sublime,Emacs和VI)都支持NET Core。
Web应用
ASPNET Core是NET Core生态系统的核心组件。ASPNET Core是一个用于构建网页的框架。ASPNET Core基于MVC架构,并提供用于构建Web的通用库。开始使用ASPNET Core
Razor是一个使用C#和TypeScript构建动态网页的新框架。Razor是一种改变 游戏 规则的技术,它允许C#开发人员用C#构建Web应用程序。
移动开发
移动开发是NET Core的关键产品。Xamarin是一套使用C#构建跨平台移动应用程序的工具和库。Xamarin允许开发人员在共享的NET代码库上为IOS、Android、Windows和MacOS构建本地应用程序。
桌面应用程序
NET Core提供各种框架和工具来构建桌面应用程序。Windows窗体、WPF、UWP和Xamarin是构建桌面应用程序的四个主要框架。NET Core还支持这些框架之间的互 *** 作性。
Windows窗体是一种构建Windows桌面应用程序的技术。Windows窗体是NET Framework的首批组件之一。
WPF(Windows Presentation Foundation)是一种较新的构建Windows桌面应用程序的技术。WPF是作为NET Framework版本的一部分发布的
了解有关wpf的更多信息这里
UWP是一种较新的技术,是在Windows 8之后发布的。如今,UWP已经成熟。UWP使用XAML作为表示层(UI)和C#作为后端编程。但是,貌似微软已经宣布了他的死亡。
微服务和容器
微服务是一种新的设计模式,它允许开发人员构建软件服务的小模块,这些模块可以使用定义良好的契约相互通信。微服务使开发、测试和部署应用程序的独立部分更加容易。一旦部署完毕,每个微服务都可以根据需要独立地进行缩放。NET Core支持微服务体系结构,它允许跨平台服务与NET Core一起工作,包括使用NET Framework、Java、Ruby或其他开发的服务。
容器是今天的越野车。NET Core的模块化、轻量级和灵活性使得将NET Core应用程序部署到容器中变得更加容易。容器把一个应用程序的所有的配置文件和依赖关系,包含在一个单独的、小型的和独立的软件部署单元中。容器可以部署在任何平台、云、Linux和Windows上。NET Core与Docker和Azure Kubernetes服务都很好地协作。
云应用程序
云应用程序现在越来越受欢迎。Azure支持各种云应用程序。NET Core和C#应用程序可以通过Visual Studio 2019部署在Azure上。
物联网
物联网应用正在增长。NET Core支持通过UWP框架为运行Windows 10 IoT Core的物联网设备进行物联网开发。UWP可用于构建在由Raspberry Pi,MinnowBoard MAX,DragonBoard 410c等提供支持的物联网上运行的应用程序。
机器学习
机器学习是软件开发人员日益增长的领域。
参考微软官方文档
游戏
Unity是最受欢迎的 游戏 开发框架之一。C#和UWP用于构建移动,桌面,控制台,电视,VR,AR和Web 游戏 。
NET Core 30中的新增的功能有哪些?
最新版本的NET Core 30刚刚发布。C#8和Windows桌面是这个版本的两个主要新增部分。
C#8是C#语言的最新版本。C#8是NET Core的一部分。C#8增加了新功能,包括
Windows桌面是NET Core 30的新增功能,允许开发人员使用Windows窗体,WPF和UWP构建Windows桌面应用程序。
以下是NET Core 30中的其他功能和增强功能列表,
参考文献
沙盒路径取错了。
NSDocumentDirectory是指程序对应的documents(用户数据)的路径。而NSDocumentationDirectory对应的程序中的Library/Documentation路径,这个路径是没有读写权限的,故不能创建数据库文件。所以不能创建数据库的原因,该从目录中去查找原因。
sqlite是一种轻量级的嵌入式数据库,占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就可以了。
以上就是关于.net是什么全部的内容,包括:.net是什么、JavaDB的一些问题、通俗易懂,什么是.NET Core以及.NET Core能做什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)