我能';t使用C#代码连接到SQL Server数据库
我试图创建注册表,但当我运行我的项目时,收到此错误消息 引发异常:System.Data.dll中的“System.Data.SqlClient.SqlException” 我的代码:我能';t使用C#代码连接到SQL Server数据库,c#,sql-server,sqlclient,C#,Sql Server,Sqlclient,我试图创建注册表,但当我运行我的项目时,收到此错误消息 引发异常:System.Data.dll中的“System.Data.SqlClient.SqlException” 我的代码: using System; using System.Data; using System.Data.SqlClient; namespace Registration{ private void Register_Click(object sender, EventArgs e) { SqlCon
using System;
using System.Data;
using System.Data.SqlClient;
namespace Registration{
private void Register_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=SHAB
SQLEXPRESS;InitialCatalog=Phonebook;Integrated Security=True");
SqlCommand cmd = new SqlCommand(@"INSERT INTO [dbo].[registration]([username[fullname],[Password]) VALUES('" + username.Text+"', '"+fullname.Text+"', '"+password.Text+"')");
con.Open();
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Congradulation You have been Registered");
}
错误出现在con.open()行上代码>
引发异常:System.Data.dll中的“System.Data.SqlClient.SqlException”
其他信息:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道)
您在[username]
和[fullname]
之间缺少一个逗号。请尝试以下操作:
INSERT INTO ... ([username], [fullname], ...
另外,使用sql参数也非常重要,我认为您只是在连接字符串中省略了用户名和密码。
请尝试以下代码
Data Source=YourServer;Initial Catalog=YourDatabaseName;User ID=YourUsername;Password=YourPassword
首先检查SQL Server服务是否正在运行。
然后检查连接字符串中的数据源值,如果您使用的是SQLExpress,则可能是
SqlConnection con=new-SqlConnection(“数据源=SHAB\SQLEXPRESS;InitialCatalog=Phonebook;集成安全性=True”);
您的连接字符串必须位于app.config文件中
<connectionStrings>
<add name="DbConnection" connectionString="Data Source=.\SQLEXPRESS;Initial
Catalog=dbname;Integrated Security=True"
providerName="System.Data.EntityClient"
<connectionStrings>
添加数据库连接
public string DbCon =
ConfigurationManager.ConnectionStrings["DbConnection"].ToString();
var Query=@"INSERT INTO [dbo].[registration]([username[fullname],[Password]) VALUES('" + username.Text+"', '"+fullname.Text+"', '"+password.Text+"')"
using (con = new SqlConnection(DbCon))
{
con.Open();
SqlCommand com = new SqlCommand(Query, con);
com.ExecuteNonQuery();
con.Close();
}
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或无法访问该服务器
如错误所示,您的连接无法连接到SQL Server,请确保您能够执行telnet SHAB 1433
如果Telnet
失败:
- 确保启用了TCP/IP协议,您可以通过SQL Server Configuration manager进行验证(以下屏幕截图供参考)
- 验证未为SQL Express服务配置自定义端口(通过SQL Server配置管理器)
如果未配置自定义端口
确保SQL浏览器服务正在运行
在Windows防火墙中创建规则以接受TCP端口上的传入连接1433
和1434(TCP和UDP)
-这必须在运行SQL服务的服务器上完成
重新启动SQL浏览器服务
您的连接应该在这里使用DataSource=SHAB\\SQLEXPRESS
。您可以使用telnet SHAB 1433
进行验证
如果配置了自定义端口
在Windows防火墙中创建规则以接受自定义TCP端口上的传入连接-这必须在运行SQL服务的服务器上完成
重新启动SQL服务
当您使用DataSource=SHAB,
时,您的连接应该在这里工作。但是,您可以执行telnet SHAB
来验证
SQL Server配置管理器:
用户名和全名部分之间有问题“插入[dbo]。[registration]([username[fullname],[Password])是您的名为“Shab sqlexpress”的计算机“?我怀疑它,不能有带空格的机器名..Shab是机器名吗?在这种情况下,Shab/sqlexpress,或者如果不是,可能是./sqlexpress..无论哪种方式,它都会告诉你它无法通过名为pipesHello的方式找到它,我的机器名是Shab,数据库服务器名是Shab\sqlexpress,但是当我写Shab\sqlexpress时,我在”\”上得到了一个错误”反斜杠sign@ProfessorShab:您需要使用SHAB\\SQLEXPRESS
(两个反斜杠)-您不应该将SQL语句连接在一起-使用参数化查询来避免SQL注入-检查OP发布的连接字符串使用集成安全性。这可能应该是一条注释!谢谢,我是堆栈溢出新手谢谢您的帮助,private void这是我编写的versas resultpriva代码te void Register_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection(“数据源=SHAB\\SQLEXPRESS;初始目录=Phonebook;用户ID=SHAB\\Professor SHAB;”);SqlCommand cmd=new SqlCommand(@“插入[dbo].[registation]([username],[fullname],[Password])//值(''“+username.Text+”、“+fullname.Text+”、“+password.Text+”))”;con.Open();cmd.ExecuteNonQuery();con.Close();MessageBox.Show(“您已注册的祝贺”);}这是我引发异常时出现的错误:System.Data.dll中的“System.Data.SqlClient.SqlException”其他信息:用户“SHAB\Professor SHAB”登录失败。我已添加了斜杠,正如您所说,我收到此消息时引发异常:System.Data.SqlClient.SqlException中的“System.Data.SqlException”其他信息:登录失败d表示用户“SHAB\Professor SHAB”。代码SqlConnection con=new SqlConnection(“数据源=SHAB\\SQLEXPRESS;初始目录=Phonebook;用户ID=SHAB\\Professor SHAB;”);SqlCommand cmd=new SqlCommand(@“插入[dbo].[注册]([username],[fullname],[Password])//值(“+username.Text+”,”+fullname.Text+“,“+password.Text+”)”;con.Open();如果你输入用户id,那么你也必须输入密码。为什么连接字符串需要在app.config中?只需要为连接字符串设置一个字符串参数。为了更好地解决这个问题,它应该在app.config中,否则你可以在项目的任何地方添加连接字符串。这完全取决于你,与问题p没有任何关系尽管如此,这只是连接字符串存储位置的语义——将连接字符串移动到app.config并不能解决问题。
public string DbCon =
ConfigurationManager.ConnectionStrings["DbConnection"].ToString();
var Query=@"INSERT INTO [dbo].[registration]([username[fullname],[Password]) VALUES('" + username.Text+"', '"+fullname.Text+"', '"+password.Text+"')"
using (con = new SqlConnection(DbCon))
{
con.Open();
SqlCommand com = new SqlCommand(Query, con);
com.ExecuteNonQuery();
con.Close();
}