我正在尝试编码"插入,删除,更新,显示"使用Ado.Net为我的作业选择sql。因为我还在学习,我的代码可能很冗长。请检查并告诉我我在哪里犯错误。代码是一半(仅针对插入编码)。
我得到的错误是:
我的代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace Crud
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("--What do you want to do?--");
Console.WriteLine(" 1. Insert\n 2. Update\n 3. Delete\n 4. Display\n");
int choice=int.Parse(Console.ReadLine());
if (choice == 1)
{
Console.Write("Enter Student name:");
string SName=Console.ReadLine();
Console.Write("Enter Student Mobile Number:");
string SMob = Console.ReadLine();
Console.Write("Enter student fees:");
string Sfees = Console.ReadLine();
Console.Write("Enter student course:");
string course=Console.ReadLine();
SqlConnection con = new SqlConnection("Data Source=Sachin-PC;Initial Catalog=ADOProject;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into focusstudents values(@name,@mobile,@fees,@course)";
cmd.Parameters.AddWithValue("@name",SName);
cmd.Parameters.AddWithValue("@mobile",SMob);
cmd.Parameters.AddWithValue("@fees", Sfees);
cmd.Parameters.AddWithValue("@course", course);
cmd.Connection = con;
con.Open();
int l = cmd.ExecuteNonQuery();
if (l > 0)
{
Console.WriteLine("Inserted Successfully");
cmd.CommandText = "select * from focusstudents";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
Console.Write("{0}{1}", dr[0], dr[1]);
}
}
else
{
Console.WriteLine("There is no data to display, add any data to be shown here");
}
}
con.Close();
}
Console.ReadKey();
}
}
}
答案 0 :(得分:0)
您是否注意到例外中的其他信息?那个是有用的错误信息。
列名或提供的值与表定义不匹配。
简单,更改您的插入查询,如下所示:
insert into focusstudents (column1, column2, column3, column4) values(@name,@mobile,@fees,@course)
它会起作用。这将确保及时映射传递值。即使您稍后在表定义中添加任何列,也不会中断。
更新:主键列应配置为自动播种或必须处理代码以在插入时获取唯一ID。