You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

数据库连接报错:不支持关键字'@"data source'求助

解决读取存储的数据库连接字符串时的“Keyword not supported”错误

嘿,这个错误的原因其实很直接——你把C#里写字符串时的语法标记(@和外层双引号)也一起存到数据库A里了

在C#代码里,@"是用来定义逐字字符串的语法:@让字符串里的反斜杠不用转义,外层的双引号是字符串的边界。但这些都不是连接字符串本身的内容啊!当你从数据库把带@"的字符串读出来直接用的时候,ADO.NET会把@"Data Source当成一个关键字来解析,这玩意儿它肯定识别不了,自然就报错了。

解决步骤

1. 修正数据库A里的存储内容

把数据库里当前存的那个连接字符串,改成去掉@和外层双引号的纯内容:

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\it_staff\source\repos\MonitorProduction_Client\MonitorProduction_Client\App_Data\monitorclientdb.mdf;Integrated Security=True

以后存连接字符串的时候,记住只存实际的连接参数,别把代码里的字符串语法标记也带进去。

2. 读取后的正确使用示例

读取出来之后,先确认一下字符串内容有没有多余的符号,然后正常创建连接就行:

// 从数据库A获取连接字符串
string dbBConnString = GetConnStringFromDB_A();

// 可选:调试时输出一下,确认内容正确
Console.WriteLine(dbBConnString);

// 连接数据库B的正确姿势
using (SqlConnection conn = new SqlConnection(dbBConnString))
{
    try
    {
        conn.Open();
        Console.WriteLine("数据库B连接成功!");
        // 这里写你的数据库操作逻辑
    }
    catch (Exception ex)
    {
        Console.WriteLine($"连接失败:{ex.Message}");
    }
    // using块会自动释放连接资源,比手动调用conn.Close()更安全可靠
}

3. 额外提醒

  • 要是担心路径里的反斜杠转义问题,其实在存储的时候完全不用管——C#里的@只是写代码时的语法糖,实际存储的字符串里反斜杠就是单个的,直接存正常的连接字符串就行。
  • 数据库存的是数据,不是代码片段,别把代码里的语法符号混进去哦!

内容的提问来源于stack exchange,提问作者lew sitthisak

火山引擎 最新活动