我在 R 中使用odbc 包,我有一个 SQL Server 数据库,其中有一个表,该表有一Name列是整数nvarchar(max),一PublishStatus列是整数。
此代码不起作用:
library(odbc)
library(DBI)
library(tidyverse)
con_string="Driver=ODBC Driver 11 for SQL Server;Server=myServer; Database=MyDatabase; trusted_connection=yes"
con=dbConnect(odbc::odbc(), .connection_string =con_string)
query="select * from MyTable"
result=NULL
result=dbSendQuery(con,query) %>% dbFetch
head(result)
Run Code Online (Sandbox Code Playgroud)
它只会产生错误信息
result_fetch(res@ptr, n, ...) 错误:nanodbc/nanodbc.cpp:2890: 07009: [Microsoft][ODBC Driver 11 for SQL Server]无效的描述符索引
如果我再次尝试查询,我会收到一条不同的错误消息,并且我可以告诉您,如果不关闭 R 并重新打开,就无法恢复:
错误:'select PublishStatus,Name from MyTable' nanodbc/nanodbc.cpp:1587: HY000: [Microsoft][ODBC Driver 11 for SQL Server]Connection is busy with results for another command
因为 R 和 R 的 odbc 都非常命名,所以很难在这个包中用谷歌搜索错误。在 …
我有一个引用 .NET Core 类库的 MVC 核心应用程序。所有的数据访问和业务逻辑都在类库中。如何从类库访问经过身份验证的用户?
过去使用 .NET Framework 您可以使用
string UserName = System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
从类库中的方法内部获取用户名。在 .NET Core 中,似乎HttpContext不再具有CurrentorUser属性。
这是一个简单的用例。假设我有一个数据实体和服务,它在将实体保存到数据库之前用日期和用户名“标记”实体。
这些将在外部类库中:
public interface IAuditable{
DateTime CreateDate{get;set;}
string UserName{get;set;}
}
public class MyEntity:IAuditable{
public int ID{get;set;}
public string Name{get;set;}
public string Information{get;set;}
}
public static class Auditor{
public static IAuditable Stamp(IAuditable model){
model.CreateDate=DateTime.UtcNow;
model.CreatedBy=System.Web.HttpContext.Current.User.Identity.Name;
return model;
}
}
public sealed class MyService:IDisposable{
MyDb db=new MyDb();
public async Task<int> Create(MyEntity model){
Auditor.Stamp(model);
db.MyEntities.Add(model);
return await db.SaveAsync();
} …Run Code Online (Sandbox Code Playgroud) 使用 knit 在 R markdown 中实现此伪代码的正确方法是什么?假设这些是文件 test.rmd 的内容
---
title: "Test"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown Loop example
```{r cars}
for(i in 1:nrow(cars)){
### Car {i}
Car {i} has a speed of {cars$speed[i]} miles per hour and a stopping distance of {cars$dist[i]} feet.
}
```
Run Code Online (Sandbox Code Playgroud)
显然这不会运行,因为我的代码块不是有效的 R。但目标是让这个 for 循环产生类似于以下 markdown 的结果,它像平常一样编译为 pdf 或 html:
## R Markdown Loop example
### Car 1
Car 1 has a speed of 4 miles per hour …Run Code Online (Sandbox Code Playgroud) 稍微修改一下这个问题的答案,假设我运行这段代码:
public int SaveOrUpdate(MyEntity entity)
{
var sql = @"MERGE INTO MyEntity
USING
(
SELECT @id as Id
@myField AS MyField
) AS entity
ON MyEntity.Id = entity.Id
WHEN MATCHED THEN
UPDATE
SET Id = @id
MyField = @myField
WHEN NOT MATCHED THEN
INSERT (Id, MyField)
VALUES (@Id, @myField);"
object[] parameters = {
new SqlParameter("@id", entity.Id),
new SqlParameter("@myField", entity.myField)
};
return context.Database.ExecuteSqlCommand(sql, parameters);
}
Run Code Online (Sandbox Code Playgroud)
这将实际运行并返回一个 int 。int 是什么意思?文档只是说
执行命令后数据库返回的结果。
我做了几个测试,看起来如果修改了一行,则为 1;如果没有任何更改,则为 0。返回值是修改的行数吗?
假设我有可汗的数据库。我可以使用此实体框架代码按名称提取可汗
Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single();
Run Code Online (Sandbox Code Playgroud)
问题在于,在实践中,用户将键入“ Oge”而不是“Öge”,并且不会获得任何匹配项。有没有一种简单的方法可以解决这个问题,以便带有重音符号的字母始终算作没有重音的字母进行搜索?
我发现了这样的问题,该问题为该方法提供了解决方案,Compare但我似乎无法将其用于数据库查询:
string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);
Run Code Online (Sandbox Code Playgroud) 我得到了一个excel电子表格:列名位于第一行,垃圾文本位于第二行,实际数据始于第三行。我想使用readxl包将其读入数据帧,保留第一行的列名,但丢弃第二行。
简单地将所有行读入数据框然后删除第一行将不起作用,因为excel文件第二行中的垃圾与该列的数据类型不匹配。
我想要一种无需手动编辑excel文件的方法。
我将年、月和日作为单独的数值并想创建一个日期对象。在像 C# 或 javascript 这样的大多数语言中,我可以做类似的事情
let x=new Date(2010,11,19);
Run Code Online (Sandbox Code Playgroud)
初始化日期。什么是 R 等价物?显然我可以做到
as.Date(paste0(year,'-',month,'-',day))
Run Code Online (Sandbox Code Playgroud)
但是为了转换为日期而转换为字符似乎毫无意义,对吧?当然有办法减少不必要的额外字符串转换吗?
r ×4
c# ×3
sql ×2
sql-server ×2
.net-core ×1
asp.net-core ×1
asp.net-mvc ×1
excel ×1
knitr ×1
odbc ×1
r-markdown ×1
readxl ×1