我已经通过网站进行了研究,找到了答案,其中大多数与我的问题很接近,但只针对特定的一行。我想将默认ID设置为1,但要说该行已被使用,我希望它搜索这些行,直到它创建具有新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;
我也试过省略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);
}
您的问题不是很清楚,但是是的,ID列应该是唯一的(根据您的要求),因此您需要ID
输入主键或唯一键。这样可以确保您的ID值不会重复并且是唯一的。
您可以将其设置为一auto_increment
列,以确保ID值在每次插入时都自动递增,但这不是强制性的。
从您发布的表定义中,我看到您的ID
列已被标记为PK,并且该auto_increment
列如下所示
CREATE TABLE IF NOT EXISTS `accounts` (
`id` int(4) NOT NULL AUTO_INCREMENT,
这样,您可以将INSERT
语句写为
insert into `accounts`(`username`,`password`,`access`,`hwid`,`ip`,`pcname`,`info`)
values('bla','bla',1,'bla','bla','bla','bla');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句