c# - 尝试使用代码将一行插入数据库,然后在单击按钮后显示该行(使用 CommandText)

标签 c# sql database

我正在尝试使用代码向数据库中插入一行,然后在单击按钮后立即显示该代码。我正在使用 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处理您的 OleDbConnectionOleDbCommandOleDbDataReader

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/

相关文章:

mysql - 如何将用户特定数据存储在数据库中

mysql - COALESCE 两个日期返回二进制?

database - 使用 Visio 自动化逆向工程数据库模型

mysql - Netbeans - "Entity Classes from Database"创建空类文件

C# - 通过公共(public)属性使私有(private)嵌套类可见

c# - C# 索引器的实际用例?

c# - ASP引发MySQL异常的解决方法

c# - 如何访问运行方法的名称?

c# - SqlDataReader 对象的内联空检查

java - MongoDB:[错误]:无法连接到位于本地主机的 MongoDB:27017