2

この質問はここで何度か聞かれました。投稿された質問を読みましたが、まだ問題があります。ASP.Net フォームから SQL Server に値を挿入しようとしています。SQL テーブルにデータを挿入するためのサンプル Web サイトを作成しました。SQL データベースの名前は「TestDatabaseDB」で、「Person」というテーブルが 1 つあります。Person テーブルには 4 つの列があります。ID、FirstName、LastName、NationalID です。IDの型は「int」です。「Is Identity:Yes」を設定しました。そのため、SQL は挿入された各レコードに ID を割り当てます。うまくいきません。ボタンをクリックしても何も起こりません。データベーステーブルにデータを挿入するか、少なくともテキストボックスをクリアする必要がありますが、そうではありません。私は試した

SqlConnection conn= new SqlConnection(@"Data source=.\SQLEXPRESS; AttachDBFilename=""|DataDirectory|\TestWebSiteDB.mdf""; integrated user=true; User Instance=true") 

うまくいきませんでした。だから私はそれを次のように変更しました:

SqlConnection conn = new SqlConnection("Data Source=. ; Database=TestWebSiteDB; Integrated Security=true");

違いはありませんでした。これが私のコードです:

using System;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnRegister_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("Data Source=. ; Database=TestWebSiteDB; Integrated Security=true");
        SqlCommand insert = new SqlCommand("insert into Person(FirstName, LastName, NationalID) values(@Name, @Surname, @ID)" ,conn);
        insert.Parameters.AddWithValue("@Name", txtboxName.Text);
        insert.Parameters.AddWithValue("@Surname", txtboxFamilyName.Text);
        insert.Parameters.AddWithValue("@ID", txtboxNationalCode.Text);
        try
        {
            conn.Open();
            insert.ExecuteNonQuery();
        }
        catch
        {
            LMsg.Text="Error when saving on database";
            conn.Close();
        }
        txtboxName.Text="";
        txtboxFamilyName.Text = "";
        txtboxNationalCode.Text = "";
    }
}

どんな助けでも大歓迎です。

4

6 に答える 6

6

これを試して:

protected void Register_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\DB_Users.mdf;Integrated Security=True");
    SqlCommand insert = new SqlCommand("insert into tbl_users(name, username, password,email) values(@name, @username, @password,@email)", conn);
    insert.Parameters.AddWithValue("@name", txtname.Text);
    insert.Parameters.AddWithValue("@username", txtusername.Text);
    insert.Parameters.AddWithValue("@password", txtpassword.Text);
    insert.Parameters.AddWithValue("@email", txtemail.Text);
    try
    {
        conn.Open();
        insert.ExecuteNonQuery();
        lbl_msg.Text = "Register done !";
      //lbl_msg.Text = "ثبت نام با موفقیت انجام شد";
    }
    catch (Exception ex)
    {
        lbl_msg.Text = "Error: "+ex.Message;
      //lbl_msg.Text = "خطا در ارتباط با پایگاه داده";
        conn.Close();
    }
}

わたしにはできる。

于 2014-08-17T11:05:51.237 に答える
3

次のように、発生しているエラーを追跡する必要があります。実際のエラーがなければ、あなたを助けることはできないからです.

catch(Exception ex)
    {
        LMsg.Text=ex.Message;
    }

また、接続をcatchブロックに閉じるのではなく、接続を閉じるためにコードでfinallyを使用する必要があります。

finaly
{
   conn.Close();
}
于 2013-10-05T08:24:02.860 に答える
0
protected void btnRegister_Click(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection("Data Source=. ; Database=TestWebSiteDB; Integrated Security=true");
    SqlDataAdapter dap = new SqlDataAdapter("insert into Person(FirstName, LastName, NationalID) values(@Name, @Surname, @ID)", con);
    dap.InsertCommand(txtboxName.Text, txtboxFamilyName.Text,txtboxNationalCode.Text);

    txtboxName.Text="";
    txtboxFamilyName.Text = "";
    txtboxNationalCode.Text = "";
}
于 2015-05-21T12:46:35.710 に答える
0

実際、リスト ビューにはデフォルトのメソッド呼び出しオンソートがあります。リスト ビューを自動的に並べ替えます。onsorting は以下のように関数を呼び出します。関数はステートメントを入れる必要はありません。

protected void Sorting(object sender,ListViewSortEventArgs e)
{

}

リスト ビューのリンク ボタンの場合は、次のようにタグを付けるだけです。

<asp:ListView ID="DisplayContent" runat="server" onSorting="Sorting">
<asp:LinkButton ID="Name" runat="server" CommandName="Sorting" CommandArgument="Name" Text="Name" />
于 2014-04-18T09:40:57.373 に答える
0

次の手順を試してください。

Step1: C# ファイルにクエリを記述する代わりに、次のようにストアド プロシージャを宣言します。

CREATE PROCEDURE [dbo].[ADD_PERSON_SP]
    /*Type of this variables should be their column types*/
    @firstName varchar(MAX),
    @lastName varchar(MAX),
    @nationalID varchar(MAX)
AS
BEGIN
    INSERT INTO [dbo].[Person] (FirstName, LastName, NationalID)
           VALUES (@firstName,@lastName,@nationalID)
END 

Step2: 必要な場所でストアド プロシージャを使用する:

SqlConnection con = new SqlConnection(connectionString);
SqlCommand com = new SqlCommand("ADD_PERSON_SP", con);
com.Parameters.AddWithValue("@firstName", txtboxName.Text);
com.Parameters.AddWithValue("@lastName", txtboxFamilyName.Text);
com.Parameters.AddWithValue("@nationalID", txtboxNationalCode.Text);
com.CommandType = CommandType.StoredProcedure;
try
{
    con.Open();
    com.ExecuteNonQuery();
}
catch (Exception)
{
    throw;
}
finally
{
    if (con.State == ConnectionState.Open)
        con.Close();
}

次の点に注意してください。

  1. C# ファイルに db 関連のものを入れないでください
  2. 変数に適切な名前を付けてください (特にコントロールの場合)。
  3. これは、connectionString に役立つ場合があります。

その助けを願っています

于 2014-08-17T11:49:10.770 に答える