0

コントロール値を取得して db テーブルに挿入する方法を学習しようとしています。たとえば、というテキストボックスがありNameBoxます。そのテキスト ボックスからテキストを取得し、データベース テーブルに追加したいと考えています。

私はそれを最善の方法でやろうとしているわけではありませんが、概念を頭で包むことができるように最も簡単です. これまでのところ、私は持っています:

<asp:TextBox ID="NameBox" runat="server"></asp:TextBox>
<asp:TextBox ID="EmailBox" runat="server"></asp:TextBox>

これがコードビハインドです。

protected void Button1_Click(object sender, EventArgs e)
{
    string name1 = NameBox.Text;
    string email1 = EmailBox.Text;

    System.Data.SqlClient.SqlConnection sqlConnection1 =
   new System.Data.SqlClient.SqlConnection(@"Data Source=E:\*********.com1.5\**********.com\App_Data\Home.sdf;");

    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "INSERT INTO CustomerList (Name, Email) VALUES (" + name1 + "," + email1 + ")";
    cmd.Connection = sqlConnection1;

    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
}

私が得ているエラーメッセージは

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

私はエラーメッセージをグーグルで検索しましたが、読んでいるものの多くは、接続がおそらく間違っていると言っています. いくつかのドラッグ アンド ドロップ コントロールを使用してこれをテストしようとしましたが、同じ接続文字列で動作するリピーターがあります。

今のところ、これが正しいアプローチであるかどうかさえわかりません。皆さんはどこかで共感できると確信しているので、非常に単純なレベルで機能することを確認したいと思います。

4

4 に答える 4

4

接続文字列は、SQL Server Compact Edition を使用していることを示しています。その場合は、代わりにSQLCeCommandandを使用しSQLCeConnectionます。文字列を連結する代わりに、パラメーター化されたクエリを使用することも検討してください。パフォーマンスとセキュリティ上の理由から優れています。SQL インジェクションの背景については、このリンクをお読みください。現時点では、SQL インジェクションに対して脆弱です。

于 2012-08-31T15:35:15.350 に答える
2

SqlCeConnection接続を作成するために使用する必要があります

リンク: http://msdn.microsoft.com/fr-fr/library/system.data.sqlserverce.sqlceconnection%28v=vs.80%29.aspx

于 2012-08-31T15:34:01.723 に答える
0

リピーター コードに使用している接続文字列をコピーして貼り付け、新しい接続を作成する Button1_Click コードに貼り付けます。余分なスペースがあるか、大文字の不一致がある可能性があります。また、挿入の場合は、Name パラメーターと Email パラメーターを受け取るストアド プロシージャをデータベースに作成し、SqlCommand を使用してストアド プロシージャを実行します。

CREATE PROCEDURE INSERT_NAME_EMAIL_DATA
    @NAME VARCHAR(100) NULL,
    @EMAIL VARCHAR(100) NULL
AS
BEGIN
      INSERT INTO CustomerList (Name, Email) VALUES (@NAME, @EMAIL)
END  

コードでは、次のようにしてストアド プロシージャを実行できます。

cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.Add(
    new SqlParameter("@NAME", name1));
cmd.Parameters.Add(
    new SqlParameter("@EMAIL", email1));
cmd.Connection = sqlConnection1;

        sqlConnection1.Open();
        cmd.ExecuteNonQuery();
        sqlConnection1.Close();
于 2012-08-31T15:42:53.197 に答える
0

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQL ネットワーク インターフェイス、エラー: 26 - 指定されたサーバー/インスタンスの検索中にエラーが発生しました)

上記のエラーの場合、次のようにサービスのウィンドウに移動して、sqlserver インスタンスを再起動しました。

windows + r を押します

services.msc と入力 + Enter

sqlserver インスタンスを見つけて再起動します

于 2014-12-31T11:46:56.210 に答える