小编Joh*_*ica的帖子

使用ExecuteNonQuery时,连接必须有效并打开

我正在使用MySQL数据库在c#(visual studio 2017)中构建配置表单.我想在数据库中存储文件夹路径.我得到一个"连接必须有效并打开"错误,但当我注释掉"cmd2.ExecuteNonQuery();"时 我没有得到错误.如果你能告诉我我做错了什么,我真的很感激.如果你能给我一个代码示例,它也会很棒.这是我的代码:

private void button5_Click(object sender, EventArgs e)
    { 

        ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
        MySqlConnection con = new MySqlConnection(conSettings.ToString());

        string a = textBox1.Text;
        string b = textBox2.Text;
        string c = textBox4.Text;
        string escapedPath = a.Replace(@"\", @"\\").Replace("'", @"\'");
        string escapedPath1 = b.Replace(@"\", @"\\").Replace("'", @"\'");
        string escapedPath2 = c.Replace(@"\", @"\\").Replace("'", @"\'");
        MySqlCommand cmd2 = new MySqlCommand("update shopmanager.paths set path_to_clients = '" + escapedPath + "',path_to_employee = '" + escapedPath1 + "',path_to_procedures = '" + escapedPath2 + "';");

        try
        {
            con.Open();
            cmd2.ExecuteNonQuery(); …
Run Code Online (Sandbox Code Playgroud)

c# mysql

2
推荐指数
1
解决办法
33
查看次数

将一个函数指向另一个

假设我有两个功能:

void DoesNothing(){}

void OnlyCalledOnce(){
    //lines of code
}
Run Code Online (Sandbox Code Playgroud)

是否可以调用OnlyCalledOnce并实际运行DoesNothing?我想象这样的事情:

void DoesNothing(){}

void OnlyCalledOnce(){
    //lines of code
    OnlyCalledOnce = DoesNothing;
}
Run Code Online (Sandbox Code Playgroud)

在最后一行之后,每当我调用OnlyCalledOnce它时都会运行DoesNothing.

是否可以?

c# function-pointers

2
推荐指数
1
解决办法
78
查看次数

如何更改项目中的启动表单?

我做了一个测试项目并添加了几个文件.

现在我想要启动文件,form2.cs而不是form1.cs.

我有一个时间找到设置的魔鬼告诉项目在执行时加载第一个文件.

有人能指出我吗?

c# startup winforms

2
推荐指数
1
解决办法
84
查看次数

签名可写 URL 错误:我们计算的请求签名与您提供的签名不匹配

我正在将一个虚拟文件上传到 Google Cloud Storage,然后在将它传递给另一个单独托管的服务之前签署一个读/写 URL。不幸的是,我收到了 403 响应,其中包含以下消息:

我们计算的请求签名与您提供的签名不匹配。检查您的 Google 密钥和签名方法。

我用来创建虚拟对象并签署 URL 的代码:

const string BASE64_JSON_CREDS = "UklQIFN0YW4gTGVl"; // credentials of service account with "Storage Admin" role (entire json file as received from Google's Console)
const string BUCKET = "testbucket";
const string FILENAME = "test.jpg";
byte[] imageBytes = File.ReadAllBytes(@"test.jpg");

GoogleCredential credentials = null;
using (var stream = new MemoryStream(Convert.FromBase64String(BASE64_JSON_CREDS)))
{
    credentials = GoogleCredential.FromStream(stream);
}

StorageClient storageClient = StorageClient.Create(credentials);
var bucket = await storageClient.GetBucketAsync(BUCKET);
await storageClient.UploadObjectAsync(bucket.Name, FILENAME, null, new MemoryStream());

var …
Run Code Online (Sandbox Code Playgroud)

c# google-cloud-storage pre-signed-url google-cloud-platform

2
推荐指数
2
解决办法
2743
查看次数

如何在分层模型中引用实例 - 该名称在当前上下文中不存在

我正在开发3层解决方案:

  • UI(Winform)
  • 存储(类库)
  • 业务层(类库)

UI引用业务,业务引用存储.

业务层包含一个类"控制器",它将驱动层之间的交互.

控制器类从UI中的main()启动.控制器轮流从业务类启动实例

但是,启动的对象在控制器类中不可用.我们做错了什么?

/* UI: Program.cs */ 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Business;

namespace UI
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Business.Controller instController = new Business.Controller(); 

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new UI());
        }
    }
Run Code Online (Sandbox Code Playgroud)

Business.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Storage;

namespace Business
{
    public class Business
    { …
Run Code Online (Sandbox Code Playgroud)

c#

2
推荐指数
1
解决办法
36
查看次数

筛选已解析的JSON对象

我正在拨打电话,并收到以下JSON响应:

{
    "issues": [{
            "id": "250271",
            "self": "KeyUrl1",
            "key": "Key-8622",
            "fields": {
                "attachment": [{
                        "self": "AttachmentUrl1",
                        "id": "106198",
                        "filename": "export.htm"
                    }
                ],
                "customfield_11041": "Test"
            }
        },
        {
            "id": "250272",
            "self": "KeyUrl2",
            "key": "Key-8621",
            "fields": {
                "attachment": [{
                        "self": "AttachmentUrl2",
                        "id": "106199",
                        "filename": "lmn.htm"
                    }
                ],
                "customfield_11041": "Test"
            }
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

我使用NewtonSoft Json将其解析为JObject。

var jObject = JObject.Parse(response);
Run Code Online (Sandbox Code Playgroud)

此外,我正在尝试过滤掉缺少附件或没有附件包含“导出”之类文件名的记录。

以下是我编写的代码,理想情况下,它应该在records对象中仅产生1条记录,但是它返回两个对象。

var issues = jObject["issues"] as JArray;
var records = issues.Where(x => !x["fields"]["attachment"].Any() || !x["fields"]["attachment"].Any(y => y["filename"].Contains("export")));
Run Code Online (Sandbox Code Playgroud)

需要帮助找出问题所在。

这是小提琴链接-https: //dotnetfiddle.net/AVyIHr

.net c# json

2
推荐指数
1
解决办法
214
查看次数

返回实现相同接口的不同泛型

考虑有办法

static IEnumerable<IComparable> q()
{
   return new List<string>();
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现相同的功能,但是在我自己的课程上,因此我收到转换错误CS0266

我尝试过这种方式,return (Common<Message>)new A();但结果InvalidCastException

interface Common<T> where T : Message
{
    T Source { get; }
    void Show();
}
interface Message
{
    string Message { get; }
}
class AMsg : Message
{
    public string Message => "A";
}
class A : Common<AMsg>
{
    public AMsg Source => new AMsg();
    public void Show() { Console.WriteLine(Source.Message); }
}
static Common<Message> test()
{
    return new A(); //CS0266
}
Run Code Online (Sandbox Code Playgroud)

该方法如何返回实现相同接口的不同泛型?

c# generics

2
推荐指数
1
解决办法
60
查看次数

如何设置显式实现的接口的属性?

我有这个代码片段:

public interface Imy
{
    int X { get; set; }
}

public class MyImpl : Imy
{
    private int _x;
    int Imy.X
    {
        get => _x;
        set => _x = value;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var o = new MyImpl();
        o.Imy.X = 3;//error
        o.X = 3;//error
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想为 X 赋值,但得到 2 个编译错误。如何解决?

c# compilation explicit properties interface

2
推荐指数
1
解决办法
68
查看次数

LINQ GroupBy 仅在键不为空时选择

这可能是一个简单的答案。

我正在制作这个 LINQ 表达式,其中按“名称”对列表进行分组,然后创建一个 SymbolField 集合,其中组键(名称)用作名称,值作为第二个参数连接在一起。

但问题更多的是,如何避免可能的空引用?

如果您查看图片,您会发现“可能”存在 为group.keynull 的情况。

我只想选择那些不为空的。我怎样才能根据我的代码做到这一点?

return result
    .GroupBy(r => r.Name)
    .Select(group =>
        new SymbolField(group.Key, string.Join(string.Empty, group.Select(g => g.Symbol))));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c# linq null c#-8.0 nullable-reference-types

2
推荐指数
1
解决办法
1095
查看次数

如何按值列表进行分组,然后计算每个值的条目数

我有一个对象列表。每个对象都包含一个以逗号分隔的字符串形式的类别列表。我想知道每个类别有多少个对象。为此,我认为我需要按类别进行分组,然后对条目进行计数 - 但是我无法全神贯注于按列表分组。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

class MyDto
{
    public string Name { get; set; }

    public List<string> Categories => CategoriesString
        .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries).ToList();
    public string CategoriesString { get; set; }

    public override string ToString()
    {
        return Name + ": " + CategoriesString;
    }
}

public class Program
{
    public static void Main()
    {
        var dtos = new MyDto[]
            {
                new MyDto() { Name = "Dto 1", CategoriesString = "DELIVERY"},
                new MyDto() { Name …
Run Code Online (Sandbox Code Playgroud)

c# linq

2
推荐指数
1
解决办法
469
查看次数