private void AddValue(string strValue)
{
//get the maximum id for Lists first
int MaxID = DataOperations.ReturnMaxIDInATable("Lists", connString);
int iSqlStatus = 0;
string query = "INSERT INTO Lists(ID, ListName, ListValue)
VALUES(@MaxID, @ListName, @ListValue)";
MaxID++;
OleDbConnection dbConn = new OleDbConnection(connString);
OleDbCommand dbComm = new OleDbCommand();
dbComm.Parameters.Clear();
try
{
dbComm.CommandText = query;
dbComm.CommandType = CommandType.Text;
OleDbParameter IDParam = new OleDbParameter();
IDParam.ParameterName = "@MaxID";
IDParam.OleDbType = OleDbType.BigInt;
IDParam.Value = MaxID;
dbComm.Parameters.Add(IDParam);
dbComm.Parameters.AddWithValue("@ListName", ListName);
dbComm.Parameters.AddWithValue("@ListValue", strValue);
dbComm.Connection = dbConn;
DataAccess.HandleConnection(dbConn);
iSqlStatus = Convert.ToInt16(dbComm.ExecuteNonQuery());
//Now check the status
if (iSqlStatus != 0)
{
//DO your failed messaging here
//return false;
}
else
{
//Do your success work here
//dbComm.
//return true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error inserting value in "
+ ListName + ","
+ strValue);
//return false;
}
finally
{
DataAccess.HandleConnection(dbConn);
}
}
5759 次
4 に答える
5
OleDbCommandを介して SQL を実行するときは、パラメーターに疑問符を使用する必要があると思います( SqlCommandは @ を使用します)。例:
INSERT INTO Lists (ID, ListName, ListValue) VALUES (?, ?, ?)
SQL に表示される順序でパラメータを追加するだけです。
于 2011-05-03T13:33:36.793 に答える
0
クエリの先頭に「DECLARE」句を含めると、次のように機能します。
string query = "DECLARE @MaxID as bigint, "+
" @ListName as Varchar(100), "+
" @ListValue As Varchar(100) " +
" INSERT INTO Lists(ID, ListName, ListValue) " +
" VALUES(@MaxID, @ListName, @ListValue)"
さらに、適切な解決策は、ドライバーを SQLClient および OracleClient に変更することです。OleDb を SQL 2005 以降で使用することはお勧めしません。
于 2016-07-05T11:09:34.183 に答える
-2
次のフラグメントは次のようになります。
IDParam.ParameterName = "MaxID";
IDParam.OleDbType = OleDbType.BigInt;
IDParam.Value = MaxID;
dbComm.Parameters.Add(IDParam);
dbComm.Parameters.AddWithValue("ListName", ListName);
dbComm.Parameters.AddWithValue("ListValue", strValue);
于 2011-05-03T13:35:15.657 に答える
-2
これはトリックを行うように見えた..
string query = string.Format("INSERT INTO Lists(ID, ListName, ListValue)
VALUES({0}, '{1}', '{2}')", MaxID, ListName, strValue);
日付の値を追加する必要がある場合はどうすればよいですか?
于 2011-05-16T13:19:26.573 に答える