我想知道是否可以将值添加到特定的数据库表格单元格中?
假设我有一个现有的数据库表,并且我将一个新值添加到一行中的特定列,我将如何添加到新值的列而不覆盖现有列的行?
Suppose I have these data for one user I want to insert new phone number to the phone column as it is shown in the image
我在谷歌搜索,我找到了这个方法
“插入用户(手机)价值('99999975')”
但是它会出错
无法将值NULL插入列'cardID',列不允许空值。 INSERT失败。
这是我的代码:
protected void btnInsert_Click(object sender, EventArgs e)
{
try
{
SqlConnection c = new SqlConnection();
c.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True";
string s = "INSERT INTO Users ( phone ) VALUES('99999975')";
SqlCommand sqlcom = new SqlCommand(s, c);
//sqlcom.Parameters.AddWithValue("@phone", TextNum.Text);
c.Open();
SqlDataReader read = sqlcom.ExecuteReader();
while (read.Read())
{
Label3.Text += "name : " + read["name"].ToString() + "<br/>";//start with +=
Label3.Text += "password: " + read["password"].ToString() + "<br/>";
Label3.Text += "phone : " + read["phone"].ToString() + "<br/>";
Label3.Text += "email : " + read["email"].ToString() + "<br/><br/>";
Label3.Text += "cardID : " + read["cardID"].ToString() + "<br/><br/>";
}
//sqlcom.ExecuteNonQuery();
Label3.Text = "Insert successful";
read.Close();
//createTable();
c.Close();
}
catch (Exception ee)
{
Label3.Text = ee.Message;
}
}
任何帮助将不胜感激。
答案 0 :(得分:2)
服务器的响应非常明确:
无法将值 NULL 插入'cardID'列,列 不允许空值。 INSERT失败。
您必须将查询转换为
string s =
@"INSERT INTO Users (
phone,
cardId) -- you have to insert into this column
VALUES(
'99999975',
'12346789') --todo: put actual CardId here";
...
// wrap IDisposable (SqlCommand) into using
using (SqlCommand sqlcom = new SqlCommand(s, c)) {
// Just Execute, you can't return cursor from INSERT
sqlcom.ExecuteNonQuery();
...
}
答案 1 :(得分:0)
您的桌子似乎需要&#34; cardID&#34;要为非null,您可以更改表以接受该字段的空值,或者为&#34; cardID&#34;传递空字符串。
你应该评估一个空的cardID是否正常或是否可能导致错误,因为目前这是一个必填字段,我猜它是有原因的
编辑: 如果您想要更改现有的电话号码(而不是添加新行),则应使用UPDATE查询。
INSERT添加新行
UPDATE允许您修改一行或多行
答案 2 :(得分:0)
您的表格为 $(window).load(function () {
jQuery(jQuery('[id="frame"]')[0].contentWindow.document).on('keyup', function (e) {
var _currntItem = ($(e.target))
if (e.keyCode === 27) {
alert(_currntItem.parent().attr('id'));
}
});
作为主键,并且通过定义,它不能为空。
插入新行时,必须为每个不可为空的列设置一个值。在您的情况下,列socket.connect_ex
就是其中之一,但它可能不是唯一的一个。
有多种方法可以插入要插入的数据并避免该消息。 完成您要执行的操作的一种方法是通过执行以下命令为主键设置值:
import socket
import subprocess
import random
import sys
# Clear the screen
subprocess.call('cls', shell=True)
for i in range(255):
remoteServerIP = "{}.{}.{}.{}".format(random.randint(2, 244), random.randint(2, 244), random.randint(2, 244), random.randint(2, 244))
# Print a nice banner with information on which host we are about to scan
print("-" * 60)
print("Please wait, scanning remote host", remoteServerIP)
print("-" * 60)
# Using the range function to specify ports (here it will scans all ports between 1 and 1024)
# We also put in some error handling for catching errors
with open("ipAdresses.txt", "a") as f:
f.write(remoteServerIP)
try:
for port in range(1,25567):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((remoteServerIP, port))
if result == 0 and port not in range(25, 67, 68) :
with open("ipAdresses.txt", "a") as f:
f.write(" {}\n".format(port))
sock.close()
except KeyboardInterrupt:
print("You pressed Ctrl+C")
sys.exit()
except socket.error:
print("Couldn't connect to server")
sys.exit()
另一种方法是将Users表的主键设置为cardID
,结果,它将获得自己自动生成的id,并且您不需要设置其值。
cardId