将多个值插入sql数据库表

时间:2016-12-12 08:34:00

标签: c# sql asp.net database

我想知道是否可以将值添加到特定的数据库表格单元格中?

假设我有一个现有的数据库表,并且我将一个新值添加到一行中的特定列,我将如何添加到新值的列而不覆盖现有列的行?

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;
    }
}

任何帮助将不胜感激。

3 个答案:

答案 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