What We Will Build
Insert Student
Display Student
Update Student
Delete Student
Without page refresh
Using ADO.NET
Simple and beginner-friendly.
Step 1: Create Database
Create table in SQL Server:
CREATE TABLE Students
(
Id INT PRIMARY KEY IDENTITY(1,1),
Name NVARCHAR(100),
Age INT
)
Step 2: Create MVC Project
Create:
Step 3: Add Model
Models → Add Class → Student.cs
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
Step 4: Add Connection String
In Web.config
<connectionStrings>
<add name="constr"
connectionString="Data Source=.;Initial Catalog=YourDatabaseName;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Replace YourDatabaseName with your database name.
Step 5: Create Controller (Using ADO.NET)
Add Controller → StudentController
Add:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
Index Method
public ActionResult Index()
{
return View();
}
Get Students
public JsonResult GetStudents()
{
List<Student> list = new List<Student>();
string cs = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM Students", con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
list.Add(new Student
{
Id = Convert.ToInt32(dr["Id"]),
Name = dr["Name"].ToString(),
Age = Convert.ToInt32(dr["Age"])
});
}
}
return Json(list, JsonRequestBehavior.AllowGet);
}
This reads data from database using SqlDataReader.
Insert Student
[HttpPost]
public JsonResult Insert(Student s)
{
string cs = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
string query = "INSERT INTO Students(Name,Age) VALUES(@Name,@Age)";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Name", s.Name);
cmd.Parameters.AddWithValue("@Age", s.Age);
con.Open();
cmd.ExecuteNonQuery();
}
return Json(true);
}
Update Student
[HttpPost]
public JsonResult Update(Student s)
{
string cs = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
string query = "UPDATE Students SET Name=@Name, Age=@Age WHERE Id=@Id";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Id", s.Id);
cmd.Parameters.AddWithValue("@Name", s.Name);
cmd.Parameters.AddWithValue("@Age", s.Age);
con.Open();
cmd.ExecuteNonQuery();
}
return Json(true);
}
Delete Student
[HttpPost]
public JsonResult Delete(int id)
{
string cs = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
string query = "DELETE FROM Students WHERE Id=@Id";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Id", id);
con.Open();
cmd.ExecuteNonQuery();
}
return Json(true);
}
Step 6: Create View (Index.cshtml)
<h2>Student CRUD (Without EF)</h2>
<input type="hidden" id="Id" />
Name: <input type="text" id="Name" />
Age: <input type="number" id="Age" />
<button onclick="Save()">Save</button>
<hr />
<table border="1">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Action</th>
</tr>
</thead>
<tbody id="studentTable"></tbody>
</table>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
Step 7: jQuery AJAX Code
Add below:
<script>
$(document).ready(function () {
LoadData();
});
function LoadData() {
$.get("/Student/GetStudents", function (data) {
var rows = "";
$.each(data, function (i, item) {
rows += "<tr>";
rows += "<td>" + item.Name + "</td>";
rows += "<td>" + item.Age + "</td>";
rows += "<td>";
rows += "<button onclick='Edit(" + item.Id + ",\"" + item.Name + "\"," + item.Age + ")'>Edit</button>";
rows += "<button onclick='Delete(" + item.Id + ")'>Delete</button>";
rows += "</td></tr>";
});
$("#studentTable").html(rows);
});
}
function Save() {
var student = {
Id: $("#Id").val(),
Name: $("#Name").val(),
Age: $("#Age").val()
};
if (student.Id == "") {
$.post("/Student/Insert", student, function () {
LoadData();
});
} else {
$.post("/Student/Update", student, function () {
LoadData();
});
}
$("#Id").val("");
$("#Name").val("");
$("#Age").val("");
}
function Edit(id, name, age) {
$("#Id").val(id);
$("#Name").val(name);
$("#Age").val(age);
}
function Delete(id) {
$.post("/Student/Delete", { id: id }, function () {
LoadData();
});
}
</script>
Final Output
All using:
ADO.NET
SqlConnection
SqlCommand
jQuery AJAX
Why This Is Important?
Many companies still use:
ADO.NET
Stored Procedures
Legacy MVC projects
Interviewers often ask:
“Can you do CRUD without Entity Framework?”
Now you can confidently say YES 💪🔥
Conclusion
In this article, we learned: