1

エラー: 認識できないエスケープ シーケンスです。

コード:

    string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DriveBuy.accdb";
    OleDbConnection con = new OleDbConnection(ConnectionString);


    if (FileUpload1.HasFile) 
    {
        String sPath = MapPath(FileUpload1.FileName);
        FileUpload1.PostedFile.SaveAs(sPath); 

        con.Open();
        string mysql; 
        mysql = "INSERT INTO Cars(Make,Model,Price,Picture) VALUES (?,?,?,?)";
        OleDbCommand cmd = new OleDbCommand(mysql, con);
        cmd.Parameters.AddWithValue("@p1", tbMake.Text);
        cmd.Parameters.AddWithValue("@p2", tbModel.Text);
        cmd.Parameters.AddWithValue("@p3", Convert.ToDecimal(tbPrice.Text));
        cmd.Parameters.AddWithValue("@p4", FileUpload1.FileName);
        cmd.ExecuteNonQuery();
        con.Close();
    }
    else
    {
        lblError.Text = "Image was not uploaded";
    }

何か案は?アクセスデータベースにデータを入力しようとしているだけです。エラーは接続文字列「\」に表示されます

乾杯

4

2 に答える 2

1

空の接続文字列を渡しています

 string ConnectionString = "";

データベースに接続するには、有効な接続文字列を指定する必要があります。このサイトが参考になるかもしれません。

編集

データディレクトリは、アクセスデータベースのディレクトリであると想定されています

// fix your data source to the correct directory
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\DriveBuy.accdb";

EDIT2

D Stanleyのコメントで指摘されているように、パラメータは実際には正しいです。ありがとうございます。

于 2013-05-09T13:39:41.453 に答える
0

それ以外の:

string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DriveBuy.accdb";

これを行う:

string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\DriveBuy.accdb";

またはこれ:

string ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DriveBuy.accdb";

C# では "\" が文字列内の特別な意味に使用されるエスケープ シーケンスであるため、エラーが発生しています。たとえば、\n は改行などを意味します。そのため、コンパイラがバックスラッシュをエスケープ シーケンスとして扱わないように、二重のバックスラッシュを使用する必要があります。

于 2013-05-09T14:29:15.763 に答える