gpt4 book ai didi

c# - System.Data.SQLite 参数问题

转载 作者:太空狗 更新时间:2023-10-29 17:28:31 25 4
gpt4 key购买 nike

我有以下代码:

try
{
//Create connection
SQLiteConnection conn = DBConnection.OpenDB();

//Verify user input, normally you give dbType a size, but Text is an exception
var uNavnParam = new SQLiteParameter("@uNavnParam", SqlDbType.Text) { Value = uNavn };
var bNavnParam = new SQLiteParameter("@bNavnParam", SqlDbType.Text) { Value = bNavn };
var passwdParam = new SQLiteParameter("@passwdParam", SqlDbType.Text) {Value = passwd};
var pc_idParam = new SQLiteParameter("@pc_idParam", SqlDbType.TinyInt) { Value = pc_id };
var noterParam = new SQLiteParameter("@noterParam", SqlDbType.Text) { Value = noter };
var licens_idParam = new SQLiteParameter("@licens_idParam", SqlDbType.TinyInt) { Value = licens_id };

var insertSQL = new SQLiteCommand("INSERT INTO Brugere (navn, brugernavn, password, pc_id, noter, licens_id)" +
"VALUES ('@uNameParam', '@bNavnParam', '@passwdParam', '@pc_idParam', '@noterParam', '@licens_idParam')", conn);
insertSQL.Parameters.Add(uNavnParam); //replace paramenter with verified userinput
insertSQL.Parameters.Add(bNavnParam);
insertSQL.Parameters.Add(passwdParam);
insertSQL.Parameters.Add(pc_idParam);
insertSQL.Parameters.Add(noterParam);
insertSQL.Parameters.Add(licens_idParam);
insertSQL.ExecuteNonQuery(); //Execute query

//Close connection
DBConnection.CloseDB(conn);

//Let the user know that it was changed succesfully
this.Text = "Succes! Changed!";
}
catch(SQLiteException e)
{
//Catch error
MessageBox.Show(e.ToString(), "ALARM");
}

它执行得很好,但是当我查看我的“brugere”表时,它插入了以下值:'@uNameParam'、'@bNavnParam'、'@passwdParam'、'@pc_idParam'、'@noterParam'、'@ licens_idParam'字面意思。而不是更换它们。

我已经尝试制作断点并检查参数,它们确实具有正确的分配值。所以这也不是问题。

我现在一直在修补这个问题,但没有运气,有人能帮忙吗?

哦,作为引用,这里是 DBConnection 类中的 OpenDB 方法:

public static SQLiteConnection OpenDB()
{
try
{
//Gets connectionstring from app.config
const string myConnectString = "data source=data;";

var conn = new SQLiteConnection(myConnectString);
conn.Open();
return conn;
}

catch (SQLiteException e)
{
MessageBox.Show(e.ToString(), "ALARM");
return null;
}
}

最佳答案

您应该删除 INSERT 语句中参数名称周围的引号。

所以代替

VALUES ('@uNameParam', '@bNavnParam', '@passwdParam', '@pc_idParam',
'@noterParam', '@licens_idParam')

使用

VALUES (@uNameParam, @bNavnParam, @passwdParam, @pc_idParam,
@noterParam, @licens_idParam)

关于c# - System.Data.SQLite 参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/751172/

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