データベースから情報の取得・更新・削除

このQ&Aのポイント
  • データベースから情報を取得・更新・削除するための方法について質問させていただきます。
  • 情報の取得は、IDとパスワードを入力して検索ボタンを押下することで、データベースからマッチしたレコードを表示する方法です。
  • 情報の更新や削除も同様に行いたいのですが、ADO.NETを使用する際にエラーが発生してしまいます。解決方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

データベースから情報の取得・更新・削除 SQL2005 C# 2

おはようございます。カネゴです。 表記の件で再度質問させていただきいます。 まずは情報取得。 これは、検索・抽出といったほうがいいのでしょうか。ID PASSを テキストボックスに入力し検索ボタンを押下すると、データベースから 検索結果に、マッチしたレコードがデータグリッドに表示されると いうものです。 sqlconnection sqlcomand. などを使用し sqldataadaptedのfill メソッドで表示させればいいのでしょが、なかなかうまくいきません… 更新削除も同様に、ado.netで行いたいのですが、なかなかうまくいきません。 「検索」btn押下後のイベントです。 SqlConnection cn = new SqlConnection(@" server = ***\SQL2005 ; " + " database = user_master ; " + " uid = sa ; " + " pwd = *** ; "); cn.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM user_master where UserID=textBox1.Text and Password=textBox2.Tet ", cn); SqlDataAdapter da = new SqlDataAdapter (); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, "user_master"); cn.Close(); たぶん、select文のなかが違うと思います。 マルチパート識別子 "textBox1.Text" をバインドできませんでした。 マルチパート識別子 "textBox2.Text" をバインドできませんでした。 とエラーがでます。 素人なので、つぎはぎして作ったので、文法的なものがめちゃくちゃかもしれませんが 以上宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • t4t
  • ベストアンサー率55% (47/84)
回答No.2

たしかにデータグリッドに表示するコードが1行もありませんから、このままでは表示されません。 (一部分だけ抜粋してるのかと思っていました) このコードが正常に終了したとき、データが入っているのはDataSetであるdsです。 ですから、dsに格納されたデータをデータグリッド知らせてやらなければなりません。 画面上のデータグリッドの変数名がわかりませんが、仮にdataGridView1とすると、 dataGridView1.DataSource = ds.Tables["user_master"]; それでもうまくいかなかったら dataGridView1.DataSource = ds.Tables[0]; を、cn.Close();の次あたりに追加してみてください。 これで、データグリッドはDataSetであるdsの内容を解釈して表示してくれると思います。 プログラムの全ソースコードが見えないので、的外れな答えをしているかもしれませんが。

t_kanegon
質問者

お礼

t4tさん できました~!!(涙) ありがとうございます。 自分でいろいろ調べようと、粘っていたのですが、さすがに限界はありますね… まだ、ユーザ追加と削除が残っているので、これからちょっとやってみます。 合掌

その他の回答 (1)

  • t4t
  • ベストアンサー率55% (47/84)
回答No.1

SqlCommand cmd = new SqlCommand("SELECT * FROM user_master where UserID=" + textBox1.Text + " and Password= " + textBox2.Text, cn); で、動くと思います。 (+や"、スペースの位置に注意してください) ただ、このコードはこのままですと悪意ある入力に対してとても弱いですので、 学習のための段階では問題ないのですが、実用プログラムで使用する場合は、 textBox1.TextやtextBox2.Textに対して、よくない値が入っていないかを事前に チェックして場合によっては文字列の変換を行ってからSqlCommandに渡すなどの対策が必要になりますので、ご注意ください。

t_kanegon
質問者

補足

t4tさんおはようございます。 表記の件ありがとうございます。 確かにopenできたのですが、データグリッドに表示されません… そのままcloseされてしまいますorz バインド?するのでしょうか? 以上よろしくお願いします。

関連するQ&A

  • データベースから情報の取得・更新・削除 visual studio2005 sqlserver2005 c# (3)

    こんにちは、カネゴンです。 標記の件で再度質問させていただきます。 データグリッドへの新レコードの追加です。 下記ソースで、まず「daをfillできません」となります。 パラメータあたりがおかしいのはわかっていますが、どのように直したらいいのやらわかりません。 次にこのページは、登録画面をnewして、別画面で表示しているのですが もちろんデータグリッドは別ページにあるため、「datagird1がありません」となります。 皆さんのお力をおかしください(__) 以上よろしくお願いします。 string StrConn = @" server = ***\SQL2005 ; " + " database =ser_master ; " + " uid = sa ; " + " pwd = *** ; "; SqlConnection cnc = new SqlConnection(StrConn); cnc.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO [user_master]" + " ( UserID ,UserName , Password , Age , Salary , Sex ) VALUES " + " ( @userid , @username, @password, @age, @salary, @sex ", cnc); cmd.Parameters.AddWithValue("@userid", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@username", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@password", SqlDbType.VarChar); cmd.Parameters.AddWithValue("@age", SqlDbType.Int); cmd.Parameters.AddWithValue("@salary", SqlDbType.Int); cmd.Parameters.AddWithValue("@sex", SqlDbType.VarChar); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds, "user_master"); cnc.Close(); dataGridView1.DataSource = ds.Tables["user_master"];  

  • SQL serverデータ取得

    public static DataSet GetCustomers() { string sql = @"SELECT * FROM M_CHARGE"; SqlConnection conn = new SqlConnection(DBConfiguration.DbConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, DBConfiguration.DbConnectionString); da.SelectCommand = new SqlCommand(sql, conn); DataSet ds = new DataSet(); ds.Tables.Add("M_CHARGE"); da.Fill(ds, "M_CHARGE"); return ds; } da.Fill(ds, "M_CHARGE");の部分でインスタンスエラーになります。どうしてでしょうか? 誰か教えて下さいお願いします(TдT)

  • C#のSQL言語について教えてください。

    windowsフォーム上にデータベースのテーブルを載せて、 書き込むボタンを作り、その書き込み内容を書き込み直後にフォーム上のデータベースのテーブルに反映させたいと思っているのですが反映されません。コードが間違っていますでしょうか? これがソースです。 SqlConnection cn; SqlCommand cmd; cn = new SqlConnection(@"Data Source=.\SQLEXPRESS; AttachDbFilename=E:\開発用\入退室記録システム(接続から読取)\SampleApplicationByCS\Database1.mdf; Integrated Security=True; Connect Timeout=30; User Instance=True"); cmd = new SqlCommand("Select * From Product", cn); cn.Open(); //Table1の学籍番号00000001の行の授業開始の列に1と入力する。 cmd = new SqlCommand("UPDATE Table1 " + "SET 授業開始='1' WHERE 学籍番号=" + response.Comm[ix].TagData, cn); cmd.ExecuteNonQuery(); SqlTransaction st; st = cn.BeginTransaction("Table1"); cmd.Transaction = st; st.Commit(); cn.Close(); コミットはこれでいいのでしょうか? this.table1TableAdapter.Fill(this.database1DataSet.Table1); これを入れてもテーブルが更新されませんでした。

  • Visual Studio 2005 Sql Server 2005 C#

    先輩方 こんばんは カネゴンです。 下記内容で困っています。 SqlConnection がオープンできません。 「SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因 sql server」のエラーと 「**」はログインできませんでしたの表示がされ、かれこれ3日悩んでおります。 宜しくお願いします。 SqlConnection cn = new SqlConnection(@" Server = local ; Trusted_Connection = Yes ; Database = user_master ; uid = *** ; pwd = *** ; "); SqlCommand cmd = new SqlCommand("login_check", cn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter p1 = new SqlParameter("@p1",             System.Data.SqlDbType.VarChar, 16); p1.Value = TextBox1.Text; SqlParameter p2 = new SqlParameter("@p2",             System.Data.SqlDbType.VarChar, 16); p2.Value = TextBox2.Text; cn.Open();

  • C# sqlserver 2005 vs2005 DB追加時重複ID禁止(2)

    こんにちは。標記の件で再度調べています。 ユーザ管理画面編集時に重複したID列を追加禁止としたいのですが、 datasetを使って、回すと件数が多くなったときに時間がかかって しまうので、SQLCOMMANDを使用使用と思っております。 SQLCOMMANDにはどのような指定を行ったらよいですか。 そこで、処理できますでしょうか? お願いします。 string userid = textBox1.Text;、 string StrConn = @" "; SqlConnection cnc = new SqlConnection(StrConn); cnc.Open(); SqlCommand cmd = new SqlCommand("●", cnc); cmd.ExecuteNonQuery(); cnc.Close();

  • ASP.NET C# SQLパラメータ

    いつもお世話になっております。 グリッドビューから編集、更新キャンセルの機能を使っているところなのですが、更新ボタンのイベント(RowUpdating)からだとUpdateCommandに直接SQL文を入れないとうまく行きません。 UpdateCommand = "update .....";のようにです。 SqlConnection cn = new SqlConnection(接続文字列); SqlCommand cmd = new SqlCommand(SQL文, cn); SqlParameter sp1 = cmd.Parameters.Add("@パラメータ", SqlDbType.Int); SqlParameter sp2 = cmd.Parameters.Add("@パラメータ2", SqlDbType.VarChar); sp1.Value = 変数 sp2.Value = 変数 cn.Open(); cmd.ExecuteNonQuery(); cn.Close(); のようにパラメータを使いたいのですが、UpdateCommandに対するパラメータの設定のやり方がわかりません、教えてください!!

  • C# vs2005 sqlserver2005 USERID列重複禁止 windows appli

    こんばんは。 標記の件で勉強しています。 string userid = textBox1.Text; に値を入力しボタンするとDBにinsertして、その際に同じUserID(DB上の)をinsertできないようにしたいのですが、下記ソースでうまくいきません。 下記はDBのUserIDをforeachでグルグル回して、そこにtextBox1に入力した 値と同じであれば、処理を中断したいのですが、まず、「colは繰り返し変数であるため割り当てることができません」と怒られます。 しかもぐるぐる回ると思われた、foreachが1回しか回らずに内容はDBの 列名である「UserID」が代入されてしまいます。 下記ソースは重複チェックの部分のみです。 SqlDataAdapter da = new SqlDataAdapter("SELECT UserID FROM user_master", cnc); // データをキャッシュする DataSet のインスタンスを作成する DataSet ds = new DataSet(); // データセットにデータを読み込む da.Fill(ds, "user_master"); foreach (DataColumn col in ds.Tables["user_master"].Columns) { col = userid; } 以上宜しくお願いします。

  • ASP C#

    単純にデータベースから取得した物をフォームのTEXT_BOXに表示させたいのですがやり方がわかりません。 グリッドビューに結果をそのままバインドするのはわかるのですが。。。 select 品名 from 商品テーブル where ID = 3 など、結果が必ず1件のものです SqlConnection cn = new SqlConnection(@"Server=*****;Database=*****;User ID=***; Password=***;"); SqlCommand cmd = new SqlCommand("select title from mst_table where id = 1", cn); cn.Open(); このあと text_box.text = 結果; としたいんです。。。

  • Insertできません

    どうしてもInsertできませんどこが間違っているのか教えてください。 Dim cn As New SqlConnection("workstation id=""ユーザー名?"";packet size=4096;user id=test;data source=server名;per" & _ "sist security info=True;initial catalog=テーブル名;Password=パスワード") Dim cmd As New SqlCommand("カラム1", cn) cmd.CommandType = CommandType.StoredProcedure 'cnst.CommandText = "INSERT INTO テーブル名(カラム1, カラム2, カラム3,カラム4) " & _ '"VALUES (@カラム1, @カラム2, @カラム3,@カラム4())" Dim p1 As SqlParameter = cmd.Parameters.Add("@カラム1", SqlDbType.VarChar, 20) p1.Value = TextBox1.Text Dim p2 As SqlParameter = cmd.Parameters.Add("@カラム2", SqlDbType.VarChar, 20) p2.Value = TextBox2.Text Dim p3 As SqlParameter = cmd.Parameters.Add("@カラム3", SqlDbType.VarChar, 20) p3.Value = Dropdownlist1.DataTextField Dim p4 As SqlParameter = cmd.Parameters.Add("@カラム4", SqlDbType.VarChar, 20) p4.Value = TextBox3.Text cn.Open() cmd.ExecuteNonQuery() cn.Close() SqlDataAdapter2.Fill(DataSet21) DataGrid1.DataBind() End Sub __________________________________________ __________________________________________

  • データベースから情報の取得・更新・削除 SQL2005 C#

    こんにちは。カネゴです。 標記の件で調べています。 マスタ管理画面を作成しているのですが、「ID・PASS」を入力後、検索ボタン押下し、条件に合致したデータをデータベースから情報を取得して表示させたいのですが、うまくいきません。 ちなみに、更新削除の処理も含めたいです。 というよりも、接続文字列・dataset datagrid sqlconnction sqlcommand datareader dataadapter などいろいろありますが、いまいち使い方が理解していません。 ちなみに言語はC#でやっております。 「初心者」でも参考になり分かりやすい本やサイトなどありましたら、紹介してください(__)@itなど参考にしているのですが、そのado.net編でも理解に苦しむレベルです。 以上よろしくお願いします(__)

専門家に質問してみよう