.net core Api项目怎么连接Mysql数据库,然后展示查询结果

.net core Api项目怎么连接Mysql数据库,然后展示查询结果,第1张

1连接数据库

SqlConnection cnn = new SqlConnection();//实例化一个连接

cnnConnectionString = "Data Source = datasource; uid = username; pwd =password; database = database_name";//设置连接字符串

cnnOpen();//打开数据库连接

2让查询在datagridview中显示

SqlDataAdapter da = new SqlDataAdapter();//实例化sqldataadpter

SqlCommand cmd1 = new SqlCommand("select from 表 , cnn);//sql语句

daSelectCommand = cmd1;//设置为已实例化SqlDataAdapter的查询命令

DataSet ds1 = new DataSet();//实例化dataset

daFill(ds1);//把数据填充到dataset

datagridview1datasource = ds1tables[0];//将数据集绑定datagridview,完成显示

说明:dataset是一个数据库在内存中的映像,包括数据库中的表,视图,关系等;sqldataadapter是C#的数据库适配器,需要通过它来查询数据库,要通过SqlDataAdapterSelectCommand来设置查询语句,查询后填充到dataset中,再把dataset和datagridview绑定就ok了,以上代码写在button事件中就可以。

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客户端中用来设置读取超时时间的参数。在 MySQL 的官方文档中,该参数的描述是这样的:

MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int )The timeout in seconds for each attempt to read from the server There are retries if necessary, so the total effective timeout value is three times the option value You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes

也就是说在需要的时候,实际的超时时间会是设定值的 3 倍。但是实际测试后发现实际的超时时间和设置的超时时间一致。

而具体什么时候发生三倍超时,在文档中没有找到。所以对 MySQL 5720 的源码进行了一些分析。

使用 GDB 调试代码找了实际与 mysql server 通信的代码,如下:

其中 vio_read() 函数中,使用 recv 和 poll 来读取报文和做读取超时。net_should_retry() 函数只有在发生 EINTR 时才会返回 true。从这段代码来看是符合测试结果的,并没有对读取进行三次重试。只有在读取 *** 作被系统中断打断时才会重试,但是这个重试并没有次数限制。

从上面代码的分析可以看出,代码的逻辑和文档的描述不符。于是在一顿搜索后,找到了一个 MySQL 的 BUG(Bug #31163)。该 BUG 报告了在 MySQL 50 中,MySQL c api 读取的实际超时时间是设置的三倍,与现有文档描述相符。于是对 MySQL 5096 的代码又进行分析。

同样使用 GDB 找到了通信部分的代码。这次找到了重试三次的代码,如下:

这个版本的 MySQL api 的读写超时是直接使用的 setsockopt 设置的。第一次循环,在 A 点发生了第一次超时(虽然注释写的非阻塞,但是客户端的连接始终是阻塞模式的)。然后在 B 点将该 socket 设置为阻塞模式,C 点这里重置 retry 次数。由于设置了 alarm 第二次以后的循环会直接进入 D 点的这个分支,并且判断循环次数。作为客户端时net->retry_count 始终是 1,所以重试了两次,共计进行了 3 次 vioread 后从 E 点退出函数。

由上面的分析可知,MySQL 文档对于该参数的描述已经过时,现在的 MYSQL_OPT_READ_TIMEOUT 并不会出现三倍超时的问题。而 Bug #31163 中的处理结果也是将文档中该参数的描述更新为实际读取超时时间是设定时间的三倍。也许是 MySQL 的维护者们在后续版本更新时忘记更新文档吧。

关系型数据库插入数据的接口一般是使用SQL语言中的INSERT INTO语句实现的。在不同的数据库管理系统中,具体的接口会有所不同,但基本的语法和用法都比较相似。

例如,在MySQL数据库中,可以使用以下形式的INSERT INTO语句来向表中插入一条新记录:

INSERT INTO 表名 (字段1, 字段2, ) VALUES (值1, 值2, )

其中,表名为目标表的名称,字段1、字段2等表示目标表中要更新的字段名称,而值1、值2等则表示对应字段的具体取值。当然,根据表结构的定义,字段名和值列表可能会有所不同。

除了直接执行SQL语句外,也可以通过编程语言提供的API或ORM框架等工具来实现数据的插入 *** 作。这些工具通常会封装底层的数据库 *** 作,简化开发者的代码编写过程。

Java连接redis的使用示例

Redis是开源的key-value存储工具,redis通常用来存储结构化的数据,因为redis的key可以包含String、hash、listset和sorted list。

以上就是关于.net core Api项目怎么连接Mysql数据库,然后展示查询结果全部的内容,包括:.net core Api项目怎么连接Mysql数据库,然后展示查询结果、MySQL C API怎么实现数据库表的插入数据、关系型数据库插入数据的接口是哪个等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9765731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存