C# 插入语句不';t在表中插入数据

C# 插入语句不';t在表中插入数据,c#,sql-server,C#,Sql Server,我对INSERT语句有问题。我从gridviev获取数据,它工作正常,但我无法将它们插入表中 private void button3_Click(object sender, EventArgs e) { int amorplanid = 0; int idn = 0; DateTime datum; double interest = 0; double principal = 0; double payment = 0; double

我对
INSERT
语句有问题。我从gridviev获取数据,它工作正常,但我无法将它们插入表中

private void button3_Click(object sender, EventArgs e)
{
    int amorplanid = 0;
    int idn = 0;
    DateTime datum;
    double interest = 0;
    double principal = 0;
    double payment = 0;
    double newprincipal = 0;

    string nizz = "";
    string[] niz= new string[7];
    for (int x = 0; x < dataGridView1.Rows.Count-1; x++)
    {
        for (int j = 0; j < dataGridView1.Rows[x].Cells.Count; j++)
        {
            nizz += dataGridView1.Rows[x].Cells[j].Value.ToString()+"."; 
        }
        niz = nizz.Split('.');

        amorplanid = System.Convert.ToInt32(niz[0]);
        idn = System.Convert.ToInt32(niz[1]);
        // datum = System.Convert.ToDateTime(niz[2]);
        datum = DateTime.Now;
        interest = System.Convert.ToDouble(niz[3]);
        principal = System.Convert.ToDouble(niz[4]);
        payment = System.Convert.ToDouble(niz[5]);
        newprincipal = System.Convert.ToDouble(niz[6]);

        String insert = @"INSERT INTO AmortPlanCoupT(ID, AmortPlanID, CoupDate, Interest, Principal, Payxment, NewPrincipal) VALUES (" + idn + "," + amorplanid + "," + datum + "," + (float)interest + "," + (float)principal + "," + (float)payment + "," + (float)newprincipal + ")";
        SqlConnection myconn = new SqlConnection(conn);
        // String MyString = @"INSERT INTO Employee(ID, FirstName, LastName) VALUES(2, 'G', 'M')";
        try
        {
            myconn.Open();
            SqlCommand cmd = new SqlCommand(insert, myconn);
            cmd.ExecuteNonQuery();
            myconn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    label14.Text = niz[0];
}

我一直在尝试不同的方法将数据写入表中,但无法将它们写入表中。

在继续之前,您应该重写代码以使用参数,而不是字符串串联。

在继续之前,您应该重写代码以使用参数,而不是字符串连接。

正如我之前在本网站上所说的那样-整个用户实例和AttachDbFileName=方法存在缺陷-最多!Visual Studio将围绕
.mdf
文件进行复制,并且很可能,您的
插入
工作正常-但您最终看到的是错误的.mdf文件

如果您想继续使用这种方法,请尝试在
myConnection.Close()
调用上放置一个断点,然后使用SQL Server Mgmt Studio Express检查
.mdf
文件,我几乎可以肯定您的数据在那里

我认为真正的解决办法是

  • 安装SQL Server Express(您已经完成了安装)

  • 安装SQL Server Management Studio Express

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    Database1

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\SQLEXPRESS;Database=Database1;Integrated Security=True
    
    其他一切都和以前一样


  • 正如我之前在这个网站上所说的那样——整个用户实例和AttachDbFileName=方法是有缺陷的——最多!Visual Studio将围绕
    .mdf
    文件进行复制,并且很可能,您的
    插入
    工作正常-但您最终看到的是错误的.mdf文件

    如果您想继续使用这种方法,请尝试在
    myConnection.Close()
    调用上放置一个断点,然后使用SQL Server Mgmt Studio Express检查
    .mdf
    文件,我几乎可以肯定您的数据在那里

    我认为真正的解决办法是

  • 安装SQL Server Express(您已经完成了安装)

  • 安装SQL Server Management Studio Express

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    Database1

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\SQLEXPRESS;Database=Database1;Integrated Security=True
    
    其他一切都和以前一样


  • 您永远不应该将SQL语句连接在一起--始终没有例外!用户。。。您是否碰巧运行了SQL Profiler以确保连接正确,等等。?我以前做过这种事情,结果连接到错误的服务器。@marc_s:每一条规则(包括这条)都有例外。但我同意。此代码易受SQL注入攻击。请停止使用用户实例/attachDbFileName功能。我敢打赌,您正在查看的数据库副本与应用程序的副本不同。@KendallFrey:您认为这个规则有什么有效的例外情况?只是好奇……您永远不应该将SQL语句连接在一起——永远,没有例外!用户。。。您是否碰巧运行了SQL Profiler以确保连接正确,等等。?我以前做过这种事情,结果连接到错误的服务器。@marc_s:每一条规则(包括这条)都有例外。但我同意。此代码易受SQL注入攻击。请停止使用用户实例/attachDbFileName功能。我敢打赌,您正在查看的数据库副本与应用程序的副本不同。@KendallFrey:您认为这个规则有什么有效的例外情况?只是好奇。。。