3

Registrationユーザーの登録に使用される名前を持つテーブルがあるデータベースがあります。

2 つの列 one isUsernameと one isしかありませんpassword

という名前のページRegister.aspxは、2 つのテキストボックスを持つメンバーを登録するために使用さUsername(textbox1)password(textbox2)ます。

主な問題は、次のようなステートメントを記述できないことです。

Insert into Registration (Username, password) 
values ('TextBox1.text','TextBox2.text')

私は ADO.net 接続指向モードを使用しています。Google で検索しましたが、接続モードで SQL データベースに行を挿入する方法が見つかりませんでした。この行を挿入するアイデアを教えてください。

4

3 に答える 3

6

ADO.NET には、接続モードをサポートする DataReader があります。他のすべては切断されています。

DataReader は、すべてのレコードがフェッチされるまで接続を開いたままにするため、接続アーキテクチャです。

ADO.NET に挿入する場合は、次の手順を実行する必要があります。

private void btnadd_Click(object sender, EventArgs e)
{
  try
  {
   //create  object  of Connection Class..................
   SqlConnection con = new SqlConnection();

   // Set Connection String property of Connection object..................
  con.ConnectionString = "Data Source=KUSH-PC;Initial Catalog=test;Integrated           Security=True";

 // Open Connection..................
  con.Open();

 //Create object of Command Class................
 SqlCommand cmd = new SqlCommand();

//set Connection Property  of  Command object.............
cmd.Connection = con;
//Set Command type of command object
//1.StoredProcedure
//2.TableDirect
//3.Text   (By Default)

cmd.CommandType = CommandType.Text;

//Set Command text Property of command object.........

cmd.CommandText = "Insert into Registration (Username, password) values ('@user','@pass')";

//Assign values as `parameter`. It avoids `SQL Injection`
cmd.Parameters.AddWithValue("user", TextBox1.text);
cmd.Parameters.AddWithValue("pass", TextBox2.text);

 Execute command by calling following method................
  1.ExecuteNonQuery()
       This is used for insert,delete,update command...........
  2.ExecuteScalar()
       This returns a single value .........(used only for select command)
  3.ExecuteReader()
     Return one or more than one record.

  cmd.ExecuteNonQuery();
  con.Close();


  MessageBox.Show("Data Saved");          
  }
     catch (Exception ex)
     {
            MessageBox.Show(ex.Message);
            con.Close();
     }


    }
于 2012-12-30T13:27:44.267 に答える
0
 try
        {

            using (var connection = new SqlConnection(yourConnectionString))
            {
                string queryString = "Select id, name, age from Table where name = @name";
                using (var command = new SqlCommand(queryString, Connection))
                {
                    command.Parameters.AddWithValue("@name", name);

                    Connection.Open();
                    SqlDataReader dataReader = command.ExecuteReader();

                    while (dataReader.Read())
                    {
                        item = new Item(long.Parse(dataReader[0].ToString()),
                                        dataReader[1].ToString(),
                                        int.Parse(dataReader[2].ToString()));
                    }
                    dataReader.Close();
                }

            }
        }
        catch (Exception ex)
        {
           // if exception will happen in constructor of SqlConnection or Command, the // resource can leak but Dispose method will never be called, couse the object was not created yet.        

          // Trace and handle here
            throw;
        }
        finally
        {

        }

しかし、ADO.net はエンタープライズ開発には役に立ちません。データ アクセス レイヤーから抽象化し、テーブル レコードではなくエンティティに移動する必要があります。ORM を使用してください、ルーク!

于 2013-11-05T21:09:44.890 に答える
-1
using System.Data.SqlClient;

string cnstr = "server=.;database=dbname;user=username;password=password;";
SqlConnection con = new SqlConnection(cnstr);
SqlCommand cmd = new SqlCommand { Connection = con };
cmd.CommandText = "Insert into Registration (Username, password) values ('@user','@pass')";
cmd.Parameters.AddWithValue("user", TextBox1.text);
cmd.Parameters.AddWithValue("pass", TextBox2.text);
try
{
    con.Open();
    cmd.ExecuteNonQuery();
}
catch (Exception)
{
    //something;
}
finally
{
    if (con != null)
       con.Close();
}
于 2012-12-30T13:26:42.637 に答える