私はこの回答を見つけるためにウェブサイトを調査しましたが、そのほとんどは私の質問に近いですが、特定の行だけを探します。私はデフォルトのIDを1にしたいが、行はすでに使用されていると言う。新しいIDを持つ新しい行が作成されるまで行を検索したい。 IDを独自のインデックスにする必要はありますか?ID行が存在するかどうかを確認します。作成していない場合は、
例:(検索列は、行を作成できるようになるまで)
ID (PK, AI)
(row 1) ID: 1 admin
(row 2) ID: 2 guest
(row 3) ID: 3 user
(row 4) *id is not created so create*
テーブル
CREATE TABLE IF NOT EXISTS `accounts` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(65) NOT NULL DEFAULT '',
`password` varchar(100) NOT NULL DEFAULT '',
`access` int(1) NOT NULL DEFAULT '0',
`hwid` varchar(100) NOT NULL DEFAULT '',
`ip` varchar(15) NOT NULL DEFAULT '0.0.0.0',
`pcname` varchar(100) NOT NULL,
`info` varchar(255) NOT NULL DEFAULT 'None',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `keys` (
`key` varchar(30) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `log` (
`Date` varchar(200) NOT NULL,
`UID` varchar(150) NOT NULL,
`IP` varchar(30) NOT NULL,
`Action` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Iはまた、ID列を省略する試みた
public MySqlDataReader InsertInto(string tableName, string[] values)
{
string query = "";
try
{
query = "INSERT INTO `" + tableName + "` (username, password, access, hwid, ip, pcinfo, info) VALUES(" + "'" + values[0] + "'";
for (int i = 1; i < values.Length; ++i)
query += ", '" + values[i] + "'";
query += ")";
}
catch { }
return ExecuteQuery(query);
}
としてあなた
INSERT
文を書くことができauto_increment
コラムですされて参照してポストされたテーブル定義にIDの一意性は一意であるため、固有である必要があります。ただし、自動インクリメントに設定する必要はありません。 – aguertin@aguertinはい私は知っているが、私はINSERT TOクエリをデータベースに送ることができる唯一の方法は文字列であり、私はそれを行うことはできないが、私は一意にチェックするだろう。 – varProjects
すべての主キーが一意であることを確認してください – aguertin