数据库连接时的语法错误字符串asp.net& C#

时间:2016-10-15 18:28:40

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

我编写了连接的代码,用于将asp.net表单数据插入到使用c#在Microsoft Visual Studio 2015中创建的SQL服务器中。我现在遇到的问题是我无法测试表单是否因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 \网站已\ WEBSITE2 \程序App_Data \ Database.mdf&#34 ;;集成     安全=真&#34);

         

第14行:protected void Page_Load(object sender,     EventArgs 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();
    }
}

3 个答案:

答案 0 :(得分:0)

应该是

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")

因为编译器不清楚你的意思。所以我们使用" \"作为一个信号,以下字符应该被解释为......好一个字符 - 而不是关键字。

否则"被解释为导致的字符串的开头/结尾 字符串一:"数据源=(LocalDB)\ MSSQLLocalDB; AttachDbFilename = \"

" unlogical"数据(因为不是开始或结束符号):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更适合您的目的。

答案 1 :(得分:0)

您在相同的字符串中使用了"两次,我认为他们甚至不会在@之前工作。尝试使用\",连接字符串也应该在app.configweb.config文件中。您的来源中永远不会硬编码

答案 2 :(得分:0)

使用连接字符串和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);