此代码应该在textbookid.Text=not empty string
时提示消息:“成功返回”并在textbookid.Text=empty string
时提示消息:“选择错误”。问题是,textbookid.text=empty string
代码提示:“成功返回”而不是提示“选择错误”。
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string cb = "UPDATE book SET [Location] = 'lib' WHERE [Book_Id]='"
+ textbookid.Text
+ "'"
;
command = new OleDbCommand(cb);
command.Connection = connection;
command.ExecuteReader();
MessageBox.Show( "Successfully returned",
"Book Details",
MessageBoxButtons.OK,
MessageBoxIcon.Information
);
connection.Close();
//delete_records();
//refs();
//refchk();
}
catch
{
MessageBox.Show("Selection Error.");
}
答案 0 :(得分:5)
因为WHERE条件导致无法更新,所以不会触发任何异常。
在任何情况下,你都错误地编码。您需要在连接和命令周围使用using statement,然后需要使用parameterized query来避免Sql注入和解析问题,最后,使用UPDATE / INSERT / DELETE的正确方法声明是ExecuteNonQuery。顺便说一句,此方法返回您的命令更改的行数,您可以使用它来发出错误消息,以防您的查询没有更改任何内容...
function copySpreadSheet(newSpreadSheetName) {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var data = sheet.getSheetValues(1, 1, 1000, 26);
var newSheet = SpreadsheetApp.create(newSpreadSheetName)
newSheet.getSheetByName("Sheet1")
.getRange(1,1,1000,26).setValues(data);
}
function main() {
copySpreadSheet("some_Spreadsheet");
}
当然,我假设您希望在任何情况下发出错误消息,其中命令不会更新任何内容,而不仅仅是文本框为空的情况。在此代码
之前,可以使用单行轻松阻止此操作try
{
using(OleDbConnection connection = new OleDbConnection(.....))
using(OleDbCommand command = new OleDbCommand(cb, connection))
{
connection.Open();
string cb = @"UPDATE book SET [Location] = 'lib'
WHERE [Book_Id]= ?";
command.Parameters.Add("@p1", OleDbType.VarWChar).Value = textbookid.Text;
int rowsUpdated = command.ExecuteNonQuery();
if(rowsUpdated > 0)
MessageBox.Show("Successfully returned", ....);
else
MessageBox.Show("Selection Error.");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
答案 1 :(得分:3)
您似乎没有返回"Selection Error"
,因为它位于catch
区块中。如果您不知道,catch
仅在try
中的代码返回错误时才会执行。
在您的情况下,您可能想尝试以下内容:
if (string.IsNullOrEmpty(textbookID.Text))
{
MessageBox.Show("Selection Error.");
}
else
{
MessageBox.Show("Successfully returned", "Book Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
注意,如果字符串为... null或为空,则string.IsNullOrEmpty
将返回true
。还有string.IsNullOrWhitespace
,如果string为null,为空或仅为空格,则返回true,即" "
。
答案 2 :(得分:1)
仅因为textbookid.text
为空,它仍然是有效的SQL命令。事先单独检查,例如:
if(String.IsNullOrWhiteSpace(textbookid.Text))
{
MessageBox.Show("Selection Error.");
return;
}
try
//the rest of your code