适应初学者c# SQL Server INSERT示例与我的数据库工作
本文关键字:我的 数据库 工作 INSERT 初学者 SQL Server | 更新日期: 2023-09-27 18:15:19
我已经阅读了大量关于我的问题的教程,文章和任何东西,老实说,由于我缺乏经验,我无法扭转我的手指在这个问题上,所以我希望你们中的一些人可以帮助我:)
我正在做一个项目(只是为了学习如何编程,所以它可能是非常基本的),但我有这个"新闻"页面,我可以使用GridView
更新和删除数据。
现在我想插入一些东西到我的数据库使用3个文本框和1个提交按钮。
我有3行必须插入:
- 标题
- 内容/新闻本身。
存储在NyhedTB下的连接字符串:BoligStjernenConnectionString
我的查询是这样的:
INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst])
VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)
我在网上看到这段代码应该为我做的魔术(我将不得不插入我自己的值的c.):
static void Insert()
{
try
{
string connectionString =
"server=.;" +
"initial catalog=employee;" +
"user id=sa;" +
"password=sa123";
using (SqlConnection conn =
new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd =
new SqlCommand("INSERT INTO EmployeeDetails VALUES(" +
"@Id, @Name, @Address)", conn))
{
cmd.Parameters.AddWithValue("@Id", 1);
cmd.Parameters.AddWithValue("@Name", "Amal Hashim");
cmd.Parameters.AddWithValue("@Address", "Bangalore");
int rows = cmd.ExecuteNonQuery();
//rows number of record got inserted
}
}
}
catch (SqlException ex)
{
//Log exception
//Display Error message
}
}
我看了这段代码,认为它应该很容易,但实际上,我不能弄清楚。
这里有一些建议让你开始,学习编程是很多的试错。
-
从基础开始,在表单/页面上放三个文本框和一个按钮。
-
双击按钮进入代码隐藏并查看按钮单击事件。
-
粘贴问题中包含的代码体(try-catch中的所有内容)。
-
在Public Void Button_Click代码行上设置一个断点,然后按F11来
"一件事是让代码在后台工作,但如何使按钮和文本框工作仍然是一个痛苦"*
将文本框作为值,而不是硬编码的值:
cmd.Parameters。AddWithValue("@ address",textBox1.Text);
您也不应该插入Id值,而是修改EmployeeDetails表并将Id列设置为属性集Identity Specification (IS Identity) = True。然后右键单击ID列,设置"主键"。
在这里发布您遇到的任何错误消息,当您设法使其正常工作时,一个额外的练习(对您将非常有价值)将使用数据库存储过程而不是特别的SQL,以防止SQL注入攻击。
我假设你已经安装了SQL Server,并有一个名为EmployeeDetails的'雇员'数据库。
protected void GvManualShows_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//label lbl = (label)e.Row.FindControl("lblHidden");
if (e.Row.Cells[14].Text == "Y")
{
// CheckBox cb = (CheckBox)e.Row.FindControl("chk");
CheckBox chk = (CheckBox)e.Row.Cells[0].FindControl("chkBox");
chk.Checked = true;
}
}
}
这相当简单。您只需要修改连接字符串、查询及其参数:
private void button1_Click(object sender, EventArgs e)
{
try
{
string connectionString =
"server=SQLServer;" + // SQLServer is your SQL server machine
"initial catalog=employee;" + // employee is your database
"user id=sa;" + // sa is the login to connect the database
"password=sa123"; // sa123 is the password of the login
using (SqlConnection conn =
new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(
"INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst]) " +
"VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
{
cmd.Parameters.AddWithValue("@NyhedDato", textBoxDate.Text);
cmd.Parameters.AddWithValue("@NyhedTitel", textBoxTitle.Text);
cmd.Parameters.AddWithValue("@NyhedTekst", textBoxBody.Text);
int rows = cmd.ExecuteNonQuery(); // Inserted rows number
}
}
}
catch (SqlException ex)
{
//Log exception
//Display Error message
}
}
我根据您的要求更改了示例代码并添加了注释,希望您能更清楚地了解发生了什么:
static void Insert()
{
try
{
string connectionString =
"server=.;" +
"initial catalog=MyDatabaseName;" + //here you write database name where your NyhedTB table is
"user id=sa;" + //user name to connect to database
"password=sa123"; //password
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd =
new SqlCommand("INSERT INTO NyhedTB (NyhedDato, NyhedTitel, NyhedTekst) VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
{
//all "things" in your sql command what beggins with @
//means that it is parameter and you need to pass values for these parameters:
//For @NyhedDato parameter you set text from your textbox
cmd.Parameters.AddWithValue("@NyhedDato", txtDate.Text);
//For @NyhedTitel parameter you set text from title textbox
cmd.Parameters.AddWithValue("@NyhedTitel", txtTitle.Text);
//For @NyhedTekst parameter you set text from content textbox
cmd.Parameters.AddWithValue("@NyhedTekst", txtContent.Text);
//Execute insert command and get how many records was efected, in this case it should be rows = 1 because you inserting just one record
int rows = cmd.ExecuteNonQuery();
}
}
}
catch (SqlException ex)
{
//Log exception
//Display Error message
}
}
注。未测试的代码。当你说
我有3行必须插入:标题日期内容/新闻本身。
实际上你的意思是你想用fields
record