【问题标题】:Syntax Error at Database Connection String asp.net & c#数据库连接字符串 asp.net 和 c# 的语法错误
【发布时间】:2017-02-25 00:57:39
【问题描述】:

我已经编写了代码来连接以将 asp.net 表单数据插入到 SQL 服务器中,该服务器是在 Microsoft Visual Studio 2015 中使用 c# 创建的。我现在遇到的问题是,由于 Synax 错误,我无法测试表单是否有效。文本文件之间有空格,我不确定这是否可能是出现错误的原因?还是放错了连接文件?我直接从 Microsoft Access 复制了路径。任何建议将不胜感激。

错误:

编译器错误消息:CS1003:语法错误,预期为 ','

来源错误:

第 11 行:公共部分类 _Default:System.Web.UI.Page

第 12 行:{

第 13 行:SqlConnection con = new SqlConnection(@"Data 源=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf";集成 安全=真");

第 14 行:protected void Page_Load(object sender, 事件参数 e)

第 15 行:{

源文件:C:\Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\Default.aspx.cs 行:13

这是c#中的表单代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;


public partial class _Default : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf";Integrated Security=True");
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Unnamed1_Click(object sender, EventArgs e)
    {
        con.Open();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.CommandText = "insert into Table values('" + pName.Text + "','" + pEmail.Text + "')";
        cmd.ExecuteNonQuery();

        con.Close();
    }
}

【问题讨论】:

    标签: c# asp.net visual-studio-2015


    【解决方案1】:

    您在同一个字符串中使用了两次",我认为它们即使在@ 前面也不会起作用。尝试使用\" 连接字符串也应该在app.configweb.config 文件中。永远不要在您的源代码中硬编码

    【讨论】:

      【解决方案2】:

      应该是

      SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=\"C: \Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf\";Integrated Security=True")
      

      因为编译器不清楚你的意思。所以我们使用“\”作为一个信号,表明下面的 char 应该被解释为......以及一个 char - 而不是作为关键字。

      否则 " 被解释为字符串的开始/结束,这会导致 字符串一:"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=\"

      “不合逻辑”的数据(因为不是开始或结束符号):C:\Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf\

      和字符串二:;Integrated Security=True

      其他可能性:

      SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + @"C: \Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf" + ";Integrated Security=True")
      

      无论如何,使用 web.config/app.config 对您的目的更好。

      【讨论】:

      • 感谢您的反馈。当我将字符串更新为第一个建议时,我得到了同样的错误,当我将它更新为第二个字符串时,我得到了类似的错误:“编译器错误消息:CS1002:;预期”
      • SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\P\Docs\Visual Studio 2015\WebSites\WebSite2\App_Data\Database.mdf;集成安全=True");
      【解决方案3】:

      使用连接字符串和 web.config 来缓和更改。

      web.config 示例:

      <configuration>
          <connectionStrings>
              <add name="LoginDB" connectionString="Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\P\\Docs\\Visual Studio 2015\\WebSites\\WebSite2\\App_Data\\Database.mdf;Integrated Security=True" />
          </connectionStrings>
      </configuration>
      

      将您的代码更改为:

      SqlConnection con = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["LoginDB"].ConnectionString);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-15
        • 1970-01-01
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多