我有一个SQL语句,我正在通过OleDb执行,语句是这样的:
INSERT INTO mytable (name, dept) VALUES (@name, @dept);
Run Code Online (Sandbox Code Playgroud)
我正在向OleDbCommand添加参数,如下所示:
OleDbCommand Command = new OleDbCommand();
Command.Connection = Connection;
OleDbParameter Parameter1 = new OleDbParameter();
Parameter1.OleDbType = OleDbType.VarChar;
Parameter1.ParamterName = "@name";
Parameter1.Value = "Bob";
OleDbParameter Parameter2 = new OleDbParameter();
Parameter2.OleDbType = OleDbType.VarChar;
Parameter2.ParamterName = "@dept";
Parameter2.Value = "ADept";
Command.Parameters.Add(Parameter1);
Command.Parameters.Add(Parameter2);
Run Code Online (Sandbox Code Playgroud)
我得到的问题是,如果我添加参数以反过来命令,那么列将填充错误的值(即名称在dept列中,反之亦然)
Command.Parameters.Add(Parameter2);
Command.Parameters.Add(Parameter1);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果参数值只是按照添加命令的顺序插入到表中,参数名称的重点是什么?参数名称似乎多余?
请您检查以下代码是否存在导致"条件表达式中的数据类型不匹配"异常的错误?我似乎无法找到问题的根源......
*record.Date
可空DateTime?
类型的*被明确地转换为DateTime
*record.Date
被设置为可为空,用于程序中的其他用途.但是从DateTimePicker检索INSERT操作的record.Date
集合,因此该方法的值永远不应为null.record.Date
哪里
和(如果你想知道的话)
从我的Access文件(设计视图):
谢谢!
这是AddRecord方法.谢谢!
public static int AddRecord(Record record)
{
OleDbConnection connection = LABMeetingRecordsDB.GetConnection();
string insertStatement = "INSERT INTO DocumentInfo " +
"([FileName], [Date], [Subject], [Type]) " +
"VALUES (?, ?, ?, ?)";
try {
OleDbCommand insertCommand = new OleDbCommand(insertStatement, connection);
insertCommand.Parameters.AddWithValue("@FileName", record.FileName);
insertCommand.Parameters.AddWithValue("@Date", (DateTime)record.Date);
insertCommand.Parameters.AddWithValue("@Subject", record.Subject);
insertCommand.Parameters.AddWithValue("@Type", record.getDBType());
connection.Open();
insertCommand.ExecuteNonQuery();
string selectStatement = "SELECT IDENT_CURRENT('DocumentInfo') FROM DocumentInfo"; …
Run Code Online (Sandbox Code Playgroud) 我正在使用OleDb填充数据表。我正在尝试使用参数化查询,但它似乎不适用于OleDbDataAdapter。有人有什么建议吗?
cmd.CommandText = "SELECT A,B,C,D FROM someTable WHERE A=@A AND D BETWEEN @D1 AND @D2";
cmd.Parameters.Add("@A", OleDbType.VarChar).Value = "1234567";
cmd.Parameters.Add("@D1", OleDbType.DBDate).Value = "02/01/2011";
cmd.Parameters.Add("@D2", OleDbType.DBDate).Value = "01/31/2012";
A first chance exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
System.Data.OleDb.OleDbException (0x80040E11): [DB2] SQL0206N "@A" is not valid in the context where it is used. SQLSTATE=42703
Run Code Online (Sandbox Code Playgroud) private int DBUpdate(){
DAL dal = new DAL();
string upd = "UPDATE [RPform] SET [ProjectName] = '@pname', [ProjectCode] = '@pcode', [Country] = @cnt, ";
upd += "[StartDate] = '@startdate', [FinishDate] = '@finishdate', [TotalParticipants] = @totpart, [ArrivalDate] = '@arrivedate', ";
upd += "[AirportTransfer] = @airtran, [AirportDate] = '@airdate', [AirportHours] = @airhour, [AirportMinutes] = @airmin, ";
upd += "[Problems] = '@problems', [FirstDayActivities] = '@fdayact' ";
upd += "WHERE [UserID]=@usid";
OleDbParameter[] parm = new OleDbParameter[] {
new OleDbParameter("@pname",projname.Text),
new OleDbParameter("@pcode",projcode.Text),
new OleDbParameter("@cnt",countries.SelectedIndex),
new …
Run Code Online (Sandbox Code Playgroud) 此代码生成Null Reference异常.异常出现在初始化参数数组的行.可能是什么问题?我不知道如何遵循堆栈跟踪并对其执行任何逻辑.提前致谢.
DAL dal = new DAL();
string SQL = @"INSERT INTO Assets ([AssetName],[AssetType],[Model],[Description],
[PurchaseValue],[SalvageValue],[Currency],[DateAcquired,[DateRetire],[ImagePath],
[InUse])
VALUES (?,?,?,?,?,?,?,?,?,?,?)";
OleDbParameter[] par = new OleDbParameter[]{
new OleDbParameter("@assetname",name.Text),
new OleDbParameter("@assettype",assettypes.SelectedValue.ToString()),
new OleDbParameter("@model",model.Text),
new OleDbParameter("@description",description.Text),
new OleDbParameter("@purchasevalue",purchaseval.Value),
new OleDbParameter("@salvagevalue",salvageval.Value),
new OleDbParameter("@currency",currencies.SelectedIndex),
new OleDbParameter("@dateacquired",purchasedate.Value),
new OleDbParameter("@dateretire",purchasedate.Value.AddYears((int)lifetime.Value)),
new OleDbParameter("@imagepath","N/A"),
new OleDbParameter("@addedby",MDIParent1.User.ID)
};
Run Code Online (Sandbox Code Playgroud)