我无法使用C#代码连接到SQL Server数据库

时间:2019-09-02 11:20:32

标签: 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)
{

     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配置为允许远程连接。 (提供者:命名管道

5 个答案:

答案 0 :(得分:1)

您缺少[username][fullname]之间的逗号。尝试:

INSERT INTO ... ([username], [fullname], ...

另外,使用sql参数非常重要

答案 1 :(得分:0)

首先检查SQL Server服务是否正在运行。 之后,检查连接字符串中的数据源值,如果您使用的是SQLExpress,则可能是 SqlConnection con = new SqlConnection("Data Source=SHAB\SQLEXPRESS;InitialCatalog=Phonebook;Integrated Security=True");

答案 2 :(得分:0)

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。

如错误所示,您的连接无法访问SQL Server,请确保您能够执行module ActionRegistry let mutable private actions : (string -> unit) list = [] let register f = actions <- f :: actions let invokeRegisteredActions() = actions |> List.iter (fun action -> action())

如果telnet SHAB 1433失败:

  • 确保已启用 TCP / IP 协议,您可以通过SQL Server配置管理器对其进行验证(以下屏幕截图仅供参考)
  • 验证未为SQL Express服务配置(通过SQL Server配置管理器)的自定义端口

如果未配置自定义端口

  1. 确保 SQL Browser服务正在运行
  2. 在Windows防火墙中创建规则以接受TCP端口Telnet1433上的传入连接-必须在运行SQL Service的服务器上完成
  3. 重新启动SQL Browser服务
  4. 您的连接在此处应与1434 (TCP and UDP)一起使用。您可以DataSource=SHAB\\SQLEXPRESS进行验证

如果已配置自定义端口

  1. 在Windows防火墙中创建一个规则以接受自定义TCP端口上的传入连接-这必须在运行SQL Service的服务器上完成
  2. 重新启动SQL服务
  3. 当您使用telnet SHAB 1433时,您的连接应该在这里工作。但是,您可以执行DataSource = SHAB,<custom port>进行验证

SQL Server配置管理器: enter image description here

答案 3 :(得分:-1)

您的连接字符串必须在app.config文件中

<connectionStrings>
    <add name="DbConnection" connectionString="Data Source=.\SQLEXPRESS;Initial 
    Catalog=dbname;Integrated Security=True" 
    providerName="System.Data.EntityClient"
<connectionStrings>

导入配置
using System.Configuration;

添加数据库连接

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();
        }

答案 4 :(得分:-3)

我认为您只是在连接字符串中省略了用户名和密码。 尝试以下代码。

Data Source=YourServer;Initial Catalog=YourDatabaseName;User ID=YourUsername;Password=YourPassword