先上code
前端
<label>借用編號</label>
<input class="number" type="text" value="@DN" id="DN" disabled />
<label>租借使用者</label>
<input class="inputname" type="text" value="@username()" id="username" disabled />
<label>租借日期</label>
<input class="expire" type="text" value="@DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")" id="today" disabled />
<label>歸還日期</label>
<input class="inputname" type="date" id="lenddate" />
<label>租借用途</label>
<input class="text-bg-danger" type="text" id="reason" />
<button class="buy" onclick="sendData()">提交申請</button>
<script type="text/javascript">
function sendData() {
var DN = document.getElementById('DN').value;
var username = document.getElementById('username').value;
var today = document.getElementById('today').value;
var lenddate = document.getElementById('lenddate').value;
var reason = document.getElementById('reason').value;
var SQLCommand = "insert into MIS_Lend_table values ('"today + "','" + DN + "','" + lenddate + " 17:00:00','" + username + "'," + "null,null,null,'" + reason + "')";
$.ajax({
type: 'POST',
url: '/Home/LendSQL',
data: { SQLCommand: SQLCommand },
success: function (result) {
console.log(result);
}
});
}
</script>
後端
//HomeController
[HttpPost]
public IActionResult LendSQL(string SQLCommand)
{
SQLs(SQLCommand);
return Redirect("MIS");
}
public void SQLs(string SQLCommand)
{
SqlConnection dataConnection = new SqlConnection();
SqlCommand mySqlCmd = new SqlCommand(SQLCommand, dataConnection);
try
{
dataConnection.ConnectionString = Resources.SqlConnectionString;
dataConnection.Open();
mySqlCmd.ExecuteNonQuery();
dataConnection.Close();
}
catch (Exception e)
{
}
finally
{
mySqlCmd.Cancel();
dataConnection.Close();
dataConnection.Dispose();
}
}
想請教各位我是不是哪個地方邏輯理解錯誤
還是語法使用錯誤
懇請指教感謝
2.直接把sql command寫在前端,這要考慮安全性的問題。
SQL語法基本上是不會放在前端來組,
因為這樣使用者可以隨意更改你的語法,
等同於你的資料庫跟裸奔是沒什麼兩樣。
如果你已經掌握了可以傳資料到後端,
那SQL這部分你就可以改成只傳username、日期等等的參數到後端,
語法就只在後端組,就會多一點安全性了。
題外話,從程式看起來你是有使用jquery的樣子
//js原始寫法
var DN = document.getElementById('DN').value;
var username = document.getElementById('username').value;
//jquery寫法
var DN = $('#DN').val();
var username = $('#username').val();
練習寫原本的js也滿不錯的,不過如果有用jquery的話,
用jquery的語法寫會快速很多,也滿值得練習的。