プロが教える店舗&オフィスのセキュリティ対策術

ADO.NETで
CREATE TABLE [dbo].[TEXT] (
[ID] INT NOT NULL,
[Text] NVARCHAR (80) NULL,
CONSTRAINT [NUM7] PRIMARY KEY CLUSTERED ([TextID] ASC)
);
というテーブルを作成しTextBoxに書いた文章をボタンを押すとデータベースのTextにデータを追加する書き方を教えてください。(IDには数字が入ります。)

A 回答 (2件)

なら



1) MAX(TextID) で現在の最大値を取得
2) 最大値+1 をTextIDに指定して insert する

の手順で可能です。
    • good
    • 1

まず。


このSQLではテーブルが作れません。
主キーに設定している TextID という列が無いようですが、IDの間違いですか?それとも列名IDの方がTextIDの間違いですか?


で、わからないのは、具体的にどこですか?
他の質問を見るかぎり、「ボタンを押したらTextBoxに書いてある文章を元にSQLを作って実行する」と自体は御存じのようですが。
ならば、TextBoxのTextを元に、INSERTするSQLを作って実行するだけです。
(あるいは、状況によっては UPDATEやMERGEで更新する)

IDが主キー(かつNot NULL)なので、重複しないような値を入れる必要がありますが、
具体的にどうするか、決めるのは設計者、つまり、あなたです。
・必ず、連番にして抜けが無いようにしたい
・重複しなければなんでもいい
・他のテーブルで使っているIDと紐付けるので、別テーブルのIDを使いたい
等々。

それによって、次のような方法を使います。
・プログラム側でIDを用意しておく
 ・SELECT MAX(ID)+1 FROM dbo.[TEXT] 等、現状のデータを元に計算
 ・現在時刻を使って計算
 ・乱数を使用
・自動で数値を作成する仕組を使う(シーケンスを使う、IDにIDENTIFY属性を付ける)
    • good
    • 0
この回答へのお礼

教えてくれてありがとうございます。
[ID]は[TextID]の書き間違えです。
TextIDは必ず、連番にして抜けがないようにしたいです。

お礼日時:2019/10/20 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!