INSERT 语句不会将数据插入表中
本文关键字:插入 数据 语句 INSERT | 更新日期: 2023-09-27 18:35:18
我对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];
}
我创建了一个Windows控制台应用程序来测试:
我有两列id (int) , leto (float)
的表格test
;
SqlConnection MyConnection = new SqlConnection(@"Data Source=.'SQLEXPRESS;AttachDbFilename=|DataDirectory|'App_Data'Database1.mdf;Integrated Security=True;User Instance=True");
try
{
MyConnection.Open();
String MyString = @"INSERT INTO test(id, leto) VALUES(2, 2)";
SqlCommand MyCmd = new SqlCommand(MyString, MyConnection);
MyCmd.ExecuteScalar();
MyConnection.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
我一直在尝试不同的东西将数据写入表,但无法将它们带到那里。
正如我之前在这个网站上所说的 - 整个用户实例和 AttachDbFileName= 方法是有缺陷的 - 充其量!Visual Studio将在.mdf
文件周围复制,最有可能的是,您的INSERT
工作正常 - 但您最终只是看错了.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
其他一切都和以前一模一样...
在继续之前,应重写代码以使用参数,而不是字符串连接。