C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#でSQLseverのDB接続、テーブル書き換え

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■98790 / inTopicNo.1)  C#でSQLseverのDB接続、テーブル書き換え
  
□投稿者/ 初心のもの (11回)-(2021/12/23(Thu) 13:14:01)

分類:[.NET 全般] 

2021/12/24(Fri) 10:27:59 編集(投稿者)
 いつもお世話になっています。。

  C#を使ってDBにアクセスして中のテーブルデータの書き換えをできるようにしたいのですが、SQLseverをWindows認証でやっていて
 ユーザー名、パスワードがない状態です。
  また、列名 "ID" データ型 "int" のテーブルデータを作ってあるのですが、左を0埋めしたくコードを書いてもうまく適応されませんでした,,
  参考:https://johobase.com/sql-padding/
  指定された数値を0埋めするのではなく、入力された数値を0埋めにしたいです。

          // string conster = @"Data Source=DESKTOP-;Initial Catalog=Test;
           //                   Connect Timeout=60;Persist Security Info=true;User ID=5;";
           // SqlConnection con = new SqlConnection(conster);
           // con.Open();

 説明がうまくできていないかもしれませんがよろしくお願いします。

引用返信 編集キー/
■98791 / inTopicNo.2)  Re[1]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ shu (1266回)-(2021/12/23(Thu) 13:23:02)
No98790 (初心のもの さん) に返信
>
>
>  いつもお世話になっています。。
>
>   C#を使ってDBにアクセスして中のテーブルデータの書き換えをできるようにしたいのですが、SQLseverをWindows認証でやっていて
>  ユーザー名、パスワードがない状態です。
>   また、列名 "ID" データ型 "int" のテーブルデータを作ってあるのですが、左を0埋めしたくコードを書いてもうまく適応されませんでした,,
> 参考:https://johobase.com/sql-padding/
>   指定された数値を0埋めするのではなく、入力された数値を0埋めにしたいです。
>
>   // string conster = @"Data Source=DESKTOP-01A2NJ9;Initial Catalog=Test;
> // Connect Timeout=60;Persist Security Info=true;User ID=5;";
> // SqlConnection con = new SqlConnection(conster);
> // con.Open();
>
>  説明がうまくできていないかもしれませんがよろしくお願いします。

データ型がintなら左側を0で埋め尽くした値は保存できません。
その必要性があるなら文字列を保存出来る型に変更する必要があります。
引用返信 編集キー/
■98792 / inTopicNo.3)  Re[1]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ くま (111回)-(2021/12/23(Thu) 13:23:52)
No98790 (初心のもの さん) に返信
> 指定された数値を0埋めするのではなく、入力された数値を0埋めにしたいです。
がうまくいかないのか
> SQLseverをWindows認証でやっていて
DBへの接続がうまくいかないのか

どちらでしょうか?
前者の場合、参照元となるテーブルの情報と実行したSQL文が無いと判断つきませんし
後者の場合接続エラーが何か書かれないと判断できませんよ?
引用返信 編集キー/
■98794 / inTopicNo.4)  Re[2]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 初心のもの (13回)-(2021/12/23(Thu) 14:04:26)
No98791 (shu さん) に返信


> データ型がintなら左側を0で埋め尽くした値は保存できません。
> その必要性があるなら文字列を保存出来る型に変更する必要があります。

 charにしたら埋められました!ありがとうございます!
 もう一点お聞きしたいのですが、”1”を入力したら自動的に”0000001”に変換してくれるようにはできるのでしょうか?
引用返信 編集キー/
■98795 / inTopicNo.5)  Re[2]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 初心のもの (14回)-(2021/12/23(Thu) 14:10:31)
No98792 (くま さん) に返信

>>SQLseverをWindows認証でやっていて
> DBへの接続がうまくいかないのか

 重複質問失礼しました、
 fileが見つからないため、visual studioでデバックを開始できません。プロジェクトを
 ビルドしてから、やり直してください。または、OutputPath及び AssemblyNameプロパティ
 をターゲットアセンブリの正しい場所を適切に設定してください

 というMessageBoxが出てくる状態なのですが、
 
引用返信 編集キー/
■98796 / inTopicNo.6)  Re[3]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ くま (113回)-(2021/12/23(Thu) 14:38:42)
ん?
> charにしたら埋められました!ありがとうございます!
接続成功してC#からSQL実行して更新したんじゃないの?

まず個人的な見解なんだけど「フィールドは数値だけしか入らない場合数値型で持つべき」と思っています
理由は2点
・検索条件で 「フィールド > 1」「フィールド BETWEEN 0 AND 1」とか書けない
※文字でもできるが、文字コードでの大小なので意味やレスポンスに影響がでる
・数値以外の値が入る可能性がある。"a"、"あ"、"+"、","とか
※トリガー処理等で規制しないといけないので面倒

よって出力する時("SELECT"で取得する時)参考にされたサイトのように前ゼロを付けて取得の方が便利だと思いますよ。

と話がそれましたが
1. Visual Studio でデバッグを開始するとデバッグ ターゲットの実行ファイルが見つからないエラーが発生しデバッグ開始できない
https://www.ipentec.com/document/visual-studio-error-not-found-execute-file-when-starting-debug
※古いVisual Studio で作成されたプロジェクトを新しいバージョンのVisual Studioに変換したプロジェクトで発生することがあります。

できれば一度現在のプロジェクト関連のファイルをバックアップしておいて
新しいプロジェクトを作成最小構成でSQLServerに接続できるかテストしてみてください。

一応
https://social.msdn.microsoft.com/Forums/ja-JP/63533fe7-1462-4321-8ecc-c9b51fd1d6e3/windows3546935388123841239225509321541239112365124271236412289sql?forum=sqlserverja

接続情報は合っているようですが…?
引用返信 編集キー/
■98797 / inTopicNo.7)  Re[4]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ くま (114回)-(2021/12/23(Thu) 14:47:28)
DBのほとんどでトリガーという機能が存在します。

トリガーの作成、変更、および削除
https://docs.microsoft.com/ja-jp/sql/relational-databases/server-management-objects-smo/tasks/creating-altering-and-removing-triggers?view=sql-server-ver15

【SQL Server】トリガーを使って日時を自動更新する方法
https://kuwayoshi.com/dbsql803

これは指定テーブルにInsert,Update,Deleteが発生した場合それを感知して処理を行える仕組みです
良く使われるのは
・入力規制
・関連する子レコードや親レコードへの更新
・レコードの更新日時の自動設定
などです。
この機能を使えば
> もう一点お聞きしたいのですが、”1”を入力したら自動的に”0000001”に変換してくれるようにはできるのでしょうか?
は可能です。
引用返信 編集キー/
■98798 / inTopicNo.8)  Re[5]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ くま (115回)-(2021/12/23(Thu) 15:10:39)
SQLServerだとIDENTITYという自動採番の機能をフィールドに設定できます。

SQL ServerのIDENTITY 自動採番する
https://sql-oracle.com/sqlserver/?p=1087

これは新規追加するたびに自動的に番号を設定してくれる機能です。
IDなんかで良く使われる機能です。

参考までに。
引用返信 編集キー/
■98799 / inTopicNo.9)  Re[4]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 初心のもの (16回)-(2021/12/23(Thu) 15:32:40)
No98796 (くま さん) に返信

>トリガーの作成、変更、および削除
今教えていただいたURLのコードをやっているのですが、根本的にSQLサーバーに接続することが私にはできていません、、
.NETFormでボタンを押すと、選択したDB内のテーブルをテキストボックスの中に表示したいのですがうまくいきません、、
 教えてもらったURLはすべて見させていただいてます!ありがとうございます。


>これは指定テーブルにInsert,Update,Deleteが発生した場合それを感知して処理を行える仕組みです
まさにこの仕組みを作りたいと思っているのですが、もう少しgoogleを堀りあさってみます、
 知識不足過ぎて申し訳ありません。
引用返信 編集キー/
■98807 / inTopicNo.10)  Re[5]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ くま (116回)-(2021/12/23(Thu) 22:12:14)
No98799 (初心のもの さん) に返信
>  知識不足過ぎて申し訳ありません。

いいえ申し訳ないなんてないですよ。わからない事を質問する場所ですから。
あと初心者が一番つまずきやすいのがDBとの接続ですから。
引用返信 編集キー/
■98810 / inTopicNo.11)  Re[5]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ shu (1267回)-(2021/12/24(Fri) 07:39:29)
No98799 (初心のもの さん) に返信
> ■No98796 (くま さん) に返信
>
> >トリガーの作成、変更、および削除
> 今教えていただいたURLのコードをやっているのですが、根本的にSQLサーバーに接続することが私にはできていません、、
> .NETFormでボタンを押すと、選択したDB内のテーブルをテキストボックスの中に表示したいのですがうまくいきません、、
>  教えてもらったURLはすべて見させていただいてます!ありがとうございます。
>
試したことや記述されたプログラムなど提示して
何がいけないのかが分かるようにされた方がよいかと思います。
引用返信 編集キー/
■98812 / inTopicNo.12)  Re[5]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ WebSurfer (2393回)-(2021/12/24(Fri) 09:28:19)
No98799 (初心のもの さん) に返信

表題&最初の質問に、

> C#でSQLseverのDB接続、テーブル書き換え
> 左を0埋めしたくコードを書いてもうまく適応されませんでした,,

と書いてあって、 No98794 には、

> charにしたら埋められました!

と書いてあったので質問の課題はできたのかと思ったら、 No98799

> 根本的にSQLサーバーに接続することが私にはできていません

と書いてあって、一体どこまでできていて、何が分からないのか、何を聞きたいのか
が分かりません。

そのあたりを、ここに書いてないこと以外は知り得ない第三者が読んで分かるように
文書化してください。初心者でも、ここのような掲示板で質問する以上は、そこは必
須です。

引用返信 編集キー/
■98813 / inTopicNo.13)  Re[6]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 迷える仔犬 (15回)-(2021/12/24(Fri) 10:01:22)
接続文字列が間違ってるだけじゃないですか?

User ID=5

って何ですか?

string conster = @"Data Source=DESKTOP-01A2NJ9;Initial Catalog=Test;Integrated Security=True;Connect Timeout=60;";

Windows認証ならこれで接続できるんじゃないかと思います。


0埋めはDB側でなく、利用プログラム側で処理した方が、メリット多い気がしますが・・・
引用返信 編集キー/
■98816 / inTopicNo.14)  Re[5]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 初心のもの (18回)-(2021/12/24(Fri) 10:47:46)
> ■No98796 (くま さん) に返信
 ありがとうございます。助かります!

>■No98812(WebSurfer さん)に返信
>そのあたりを、ここに書いてないこと以外は知り得ない第三者が読んで分かるように
>文書化してください。初心者でも、ここのような掲示板で質問する以上は、そこは必
>須です。

 申し訳ないです、、
 一応C#からDBに接続はできました[ボタンをクリックしたらテーブルデータをテキストボックスに表すもの]
       private void button1_Click(object sender, EventArgs e)
         {
            string conster = @"Data Source=DESKTOP-;Initial Catalog=Test;
                  Connect Timeout=60;Persist Security Info=false;";
            SqlConnection con = new SqlConnection(conster);
            con.Open();
            try
            {
                string sqlstr = "SELECT * FROM Table_1";
                SqlCommand com = new SqlCommand(sqlstr, con);
                SqlDataReader rea = com.ExecuteReader();

                while (rea.Read() == true)
                {
                    int ID = (int)rea["ID"];
                    string Name = (string)rea["Name"];
                    string HName = (string)rea["HName"];
                    string EnName = (string)rea["EnName"];
                    string Gender = (string)rea["Gender"];
                    var Day = rea["Day"];
                    textBox1.Text += string.Format("{0}/{1}/{2}/{3}/{4}/{5}\r\n", ID, Name.Trim(), HName.Trim(), EnName.Trim(), Gender.Trim(), Day);
                }
                rea.Close();
                com.Dispose();
            }
            finally
            {
                con.Close();
            }

        }
    

引用返信 編集キー/
■98817 / inTopicNo.15)  Re[7]: C#でSQLseverのDB接続、テーブル書き換え
□投稿者/ 初心のもの (19回)-(2021/12/24(Fri) 10:52:07)
2021/12/24(Fri) 11:02:08 編集(投稿者)

No98813 (迷える仔犬 さん) に返信
> User ID=5
 SQLで”SELECT 〜〜”で実行したら出てきたのでとりあえずで入力してみた値です、

>
> string conster = @"Data Source=DESKTOP-01A2NJ9;Initial Catalog=Test;Integrated Security=True;Connect Timeout=60;";
>
> Windows認証ならこれで接続できるんじゃないかと思います。

 試させてもらってこれでも入ることができました!ありがとうございます:)
> 0埋めはDB側でなく、利用プログラム側で処理した方が、メリット多い気がしますが・・・

 そこをこれからやっていきたいと思います!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ