gpt4 book ai didi

c# - SQL 多语句,INSERT 不工作

转载 作者:行者123 更新时间:2023-11-30 21:10:35 25 4
gpt4 key购买 nike

我正在开发一个网络应用程序,但遇到了一个问题。当有人尝试(成功或不成功)登录时,我需要将用户名和 IP 地址插入到 SQL 数据库表“日志”中。 ID、时间和日期会自动插入...出于某种原因,我无法在我的登录表单中使用它。如果我从另一个表单启动它,INSERT 语句工作正常,但我无法让它与我用于检查登录凭据的 SELECT 语句一起工作。

我尝试过不同的解决方案,但没有一个能将数据插入表中...它不会抛出错误,只是不会在“日志”表中插入新行。

感谢任何帮助。 :)

protected void btnLog_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConn"].ToString()))
{
string username = null;
string password = null;
string ipAddress = null;

SymCryptography cryptic = new SymCryptography();
SqlCommand cmdSelect = new SqlCommand();
SqlCommand cmdLog = new SqlCommand();
SqlDataReader myReader = null;

cmdSelect.Connection = conn;
cmdLog.Connection = conn;

cmdSelect.CommandText = "SELECT * FROM uporabniki WHERE up_ime=@up_ime AND geslo=@geslo";
cmdSelect.CommandType = CommandType.Text;
cmdLog.CommandText = "INSERT INTO log (up_ime, ip) VALUES (@up_ime, @ip)";
cmdLog.CommandType = CommandType.Text;

cmdSelect.Parameters.Add("@up_ime", SqlDbType.NVarChar, 20).Value = tbUsr.Text;
cmdSelect.Parameters.Add("@geslo", SqlDbType.NVarChar, 20).Value = cryptic.Encrypt(tbPwd.Text);
cmdLog.Parameters.Add("@up_ime", SqlDbType.NVarChar, 20).Value = tbUsr.Text;
cmdLog.Parameters.Add("@ip", SqlDbType.NVarChar, 20).Value = ipAddress;

conn.Open();
try
{
//cmdLog.ExecuteNonQuery(); I tried it here, but it doesn't work
myReader = cmdSelect.ExecuteReader();
if (myReader.Read())
{
username = myReader["up_ime"].ToString();
password = myReader["geslo"].ToString();
Session["rights"] = myReader["pravice"];
Session["login"] = "OK";
pravice = true;
}
myReader.Close();
//cmdLog.ExecuteNonQuery(); I tried it here, but it doesn't work
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}
//I tried to open connection again, but stil INSERT does not work
/* using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConn"].ToString()))
{
string ipAddress = null;
SqlCommand cmdLog = new SqlCommand();
cmdLog.Connection = conn;
cmdLog.CommandText = "INSERT INTO log (up_ime, ip) VALUES (@up_ime, @ip)";
cmdLog.CommandType = CommandType.Text;
cmdLog.Parameters.Add("@up_ime", SqlDbType.NVarChar, 20).Value = tbUsr.Text;
cmdLog.Parameters.Add("@ip", SqlDbType.NVarChar, 20).Value = ipAddress;
conn.Open();
try
{
cmdLog.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
conn.Close();
}

if (pravice == true)
{
Response.Redirect("Default.aspx");
}
else
{
Response.Redirect("Login.aspx");
}*/
}

最佳答案

你没有执行你的 cmdLog.ExecuteNonQuery();声明。

此外,尝试在您的 sql 数据库中打开一个查询窗口并针对它运行以下命令。

INSERT INTO log (up_ime, ip) VALUES (<some time>, <test ip text>)

如果错误出在 sql server 中,您应该返回一条错误消息,说明问题是否出在 SQL Server 中。

也尝试改变:

    cmdLog.Parameters.Add("@up_ime", SqlDbType.NVarChar, 20).Value = tbUsr.Text;
cmdLog.Parameters.Add("@ip", SqlDbType.NVarChar, 20).Value = ipAddress;

收件人:

  cmdLog.Parameters.Add("@up_ime", tbUsr.Text);
cmdLog.Parameters.Add("@ip", ipAddress);

关于c# - SQL 多语句,INSERT 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com