我对C#很陌生,所以我使用教程来实现。
我正在关注创建登录表单的youtube教程。链接here,在10:00分钟进入视频时,他开始输入之前从数据库中检索到的连接字符串。
我按照完全相同的步骤输入以下内容:
SqlConnection connnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf";Integrated Security=True");
然而,我惊讶地发现有26条错误与该线有关。我怀疑这与字符串有关,因为我读到了here
您还必须转义连接字符串中的后反斜杠\成为此\\
但是,通过在字符串前面使用@
符号,我在阅读here时会变成verbatim string
,这样就不会出现问题。
现在,我假设问题出在我的app.config
上,我在其他帖子中看到他们在那里添加连接字符串,然后创建一个引用该连接字符串的新连接字符串,但是在列出的教程中,他没有这样做,这让我感到困惑。
的App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
登录按钮
private void buttonLogin_Click(object sender, EventArgs e)
{
SqlConnection connnection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="C: \Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf";Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter("select count(*) from login where Username ='" + textBoxUsername.Text + "' and Password='" + textBoxPassword.Text + "'", connnection);
DataTable dt = new DataTable();
sda.Fill(dt);
if (dt.Rows[0][0].ToString() == "1")
{
LoginSuccess();
}
else
{
MessageBox.Show("Failed login.");
}
}
错误消息
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1009无法识别的转义序列Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1056意外字符&#39; \&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1056意外字符&#39; \&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1056意外字符&#39; \&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1056意外字符&#39; \&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1012字符文字Kops&#39;中的字符过多工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1009无法识别的转义序列Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1056意外字符&#39; \&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1003语法错误,&#39;,&#39;预计Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1739&#39; SqlConnection&#39;的最佳重载没有名为&#39; C&#39;芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39;用户&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39;凯文&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS1738在指定了所有固定参数后,必须出现命名参数规范。请使用语言版本7.2或更高版本以允许非尾随命名参数。芭斯&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39;来源&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39; repos&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39; Kops&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39;工具箱&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62有效
错误CS0103名称&#39;数据库1&#39;在目前的背景下不存在Kops&#39;工具箱C:\ Users \ Kevin \ source \ repos \ Kops&#39;工具箱\芭斯&#39; Toolbox \ Form1.cs 62 Active
名为Database1
的数据库名为UserData
答案 0 :(得分:1)
你快到了。主要问题是你的字符串包含双引号;但是字符串本身是用双引号分隔的,所以你需要逃避&#39;那个角色(尽管已接受的答案与逐字字符串相关的问题没有提及 - 我会添加评论,但另一个答案提到它。)
您应该能够通过编辑器中的来源着色来确定它是不对的。如果你不能,那就找一个更好的编辑。
转义的方式因普通字符串和逐字字符串而异。使用逐字字符串,只需将双引号加倍,如下所示:
SqlConnection connnection = new SqlConnection(
@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""C:\Users\Kevin\source\repos\Kops' Toolbox\Kops' Toolbox\Database1.mdf"";Integrated Security=True");
(我删除了C:
之后的空格)
额外提示:
using
块中。