Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据保存到MSSQL文件时出错_C#_Asp.net_Sql Server - Fatal编程技术网

C# 将数据保存到MSSQL文件时出错

C# 将数据保存到MSSQL文件时出错,c#,asp.net,sql-server,C#,Asp.net,Sql Server,多亏了一些帮助,我修复了以前的一些问题,但当我单击“注册”按钮(button1)时,出现以下错误: ERROR=ERROR[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序 我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebCon

多亏了一些帮助,我修复了以前的一些问题,但当我单击“注册”按钮(
button1
)时,出现以下错误:

ERROR=ERROR[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Odbc;


public partial class CompanyLogin : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
    OdbcConnection conn = new OdbcConnection();
    conn.ConnectionString = @".\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VCtemps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

    string sql = "insert into company values(@CompName, @BusinessType, @Pword)";
    OdbcCommand cmd = new OdbcCommand(sql);
    string CompName = txtCompName.Text;
    string BusinessType = DropDownList1.Text;
    string Pword = txtPassword.Text;
    conn.Open();
    cmd.Connection = conn;

    cmd.CommandText = "insert into company(CompName, BusinessType, Pword) Values(@CompName,@BusinessType,@Pword);";
    cmd.Parameters.AddWithValue("@CompName",SqlDbType.VarChar);    
    cmd.Parameters.AddWithValue("@BusinessType",SqlDbType.VarChar);    
    cmd.Parameters.AddWithValue("@Pword",SqlDbType.VarChar);    

cmd.ExecuteNonQuery();

    conn.Close();

    txtCompName.Text = "";
    txtPassword.Text = "";
    DropDownList1.Text = "";
}
}

非常简单的错误消息。您需要在连接字符串中指定数据源和驱动程序。访问以查找目标数据库的连接字符串应该是什么样子。

在连接字符串中,您已经跳过了黑色斜杠,并且在字符串前面使用了@符号。问题可能是你两者都做了。删除@或删除两处的双斜杠

@".\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VCtemps.mdf...etc
…但是说实话,无论如何,你不应该硬编码你的连接字符串。您应该将连接字符串添加到web.config文件的ConnectionString部分:

<configuration>
    <connectionStrings>
       <add name="ConnectionString" connectionString=".\SQLEXPRESS;AttachDbFilename=|DataDirectory|\VCtemps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" />
    </connectionStrings>
...

请注意,您正在设置SQL文本两次。您应该删除其中一行(第一行-不正确),以避免混淆…而且,所有AddWithValue行都不正确。您传入的SqlDbType比实际值大。您应该将值传递给此函数。例如:cmd.Parameters.AddWithValue(“@CompName”,CompName);除了我提出的双转义问题外,它与链接到的站点上的SQLEXPRESS的连接字符串完全匹配,即:Server=。\SQLEXPRESS;AttachDbFilename=|数据目录| mydbfile.mdf;数据库=dbname;可信连接=是;
conn.ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;