我正在尝试使用代码向数据库中插入一行,然后在单击按钮后立即显示该代码。我正在使用 C#。
comm.CommandText = "INSERT INTO Store (FirstName, LastName) Values ('" + txtFirstName.Text + "', '" + txtLastName.Text + "')";
上面的代码有效。但是,如果我添加以下代码(将起作用),它将不起作用:
comm.CommandText = "Select FirstName, LastName from Store";
单击按钮时,我想将行(包含刚刚从文本框中输入的信息)插入到表中,并将该新行显示到表单中(设置为查看表)。我试图让这两个命令同时工作,但只有第二个“命令”有效。
下面是周围的代码:
protected void btnSubmit_Click(object sender, EventArgs e)
{
String testVar = txtFirstName.Text;
OleDbConnection conn = new OleDbConnection(); //where to find db
conn.ConnectionString = ConfigurationManager.ConnectionStrings["storeConnString"].ConnectionString; //long connection screen.
conn.Open();
OleDbCommand comm = conn.CreateCommand();
comm.Connection = conn;
comm.CommandText = "INSERT INTO Store (FirstName, LastName) Values ('" + txtFirstName.Text + "', '" + txtLastName.Text + "')";
comm.CommandText = "Select FirstName, LastName from Store";
OleDbDataReader reader = comm.ExecuteReader();
(我知道我需要使用参数,但我会在弄清楚之后再这样做。)
谢谢,布拉德
最佳答案
因为在这两行之后,您的INSERT
命令将不再分配给您的comm
。
comm.CommandText = "INSERT INTO Store (FirstName, LastName) Values ('" + txtFirstName.Text + "', '" + txtLastName.Text + "')";
comm.CommandText = "Select FirstName, LastName from Store";
CommandText
属性现在只有您的 SELECT
语句。只需使用 ExecuteNonQuery
执行您的 INSERT
查询然后使用 ExecuteReader
获取您的 SELECT
语句结果。
comm.CommandText = "INSERT INTO Store (FirstName, LastName) Values ('" + txtFirstName.Text + "', '" + txtLastName.Text + "')";
comm.ExecuteNonQuery();
comm.CommandText = "Select FirstName, LastName from Store";
OleDbDataReader reader = comm.ExecuteReader();
如您所说,您应该始终使用 parameterized queries .这种字符串连接对于 SQL 注入(inject)攻击是开放的。
并使用 using
statement处理您的 OleDbConnection
、OleDbCommand
和 OleDbDataReader
;
using(OleDbConnection conn = new OleDbConnection(conString))
using(OleDbCommand comm = conn.CreateCommand())
{
// Execute your INSERT query here.
// Also check your INSERT is successfull or not.
// Assing your SELECT statement to your CommandText property
using(OleDbDataReader reader = comm.ExecuteReader())
{
//
}
}
关于c# - 尝试使用代码将一行插入数据库,然后在单击按钮后显示该行(使用 CommandText),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700838/