-3

いくつかの助けのおかげで、以前の問題のいくつかを修正しましたが、登録ボタン(button1)をクリックすると、次のエラーが発生します。

ERROR = ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

私のコード:

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 = "";
}
}
4

2 に答える 2

2

かなり自明のエラーメッセージ。接続文字列でデータ ソースとドライバーを指定する必要があります。データベースの接続文字列にアクセスして、対象のデータベースの接続文字列がどのように見えるかを確認してください。

于 2012-10-11T15:02:44.697 に答える
0

接続文字列で、ブラックスラッシュをエスケープし、文字列の前に @ 記号を使用しました。おそらく問題は、両方を行ったことです。@ を削除するか、両方の場所の二重スラッシュを削除してください。

@".\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VCtemps.mdf...etc

...しかし、正直なところ、接続文字列をそのようにハードコードするべきではありません。接続文字列を web.config ファイルの ConnectionStrings セクションに追加する必要があります。

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

次に、コードを次のように変更します。

conn.ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
于 2012-10-11T15:07:24.433 に答える