PDA

View Full Version : lỗi khi code C# giúp em với



anhduong123
18-09-2010, 10:58 AM
em đang code bài quản lý sinh viên
form của em gồm 3 buttom thêm sưa xóa
thêm và xóa đã ok rồi nhưng khi muốn sửa 1 sinh viên thì nó hiện lỗi sau:
The SqlParameterCollection only accepts non-null SqlParameter type objects.
Parameter name: value
cụ thể
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;


namespace QUANLYSINHVIEN
{
class SinhVienDao
{

SqlConnection bkn = new SqlConnection(@"server=duongk5\sqlexpress;database=QUANLYSINHVIEN; user=sa;password=123456");

public DataTable view_text(string s)
{
bkn.Open();
SqlDataAdapter da = new SqlDataAdapter(s, bkn);
DataTable dt = new DataTable();
da.Fill(dt);
bkn.Close();
return dt;

}
public void proc_TS(string s, SqlParameter[] sp)
{

bkn.Open();
SqlCommand cmd = new SqlCommand(s, bkn);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter s1 in sp)
{
cmd.Parameters.Add(s1);// lỗi tại đây
}
cmd.ExecuteNonQuery();

bkn.Close();
}
}
}
pro nào giúp em với

hanhkhat
18-09-2010, 01:13 PM
đây là cái DBExcute của mình. Bạn tham khảo nhé

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace DataAccess
{
public abstract class DBExecute
{
public abstract DataTable Execute_Table(string Text, SqlParameter[] para, CommandType cmdType);
public abstract DataTable Execute_Table1(string Text, SqlParameter[] para, CommandType cmdType);
public abstract IDataReader Execute_DataReader(string Text, SqlParameter[] para, CommandType cmdType);
public abstract DataSet Execute_Tables(string Text, SqlParameter[] para, CommandType cmdType);
public abstract object Execute_Object(string Text, SqlParameter[] para, CommandType cmdType);
public abstract int Execute_Modify(string Text, SqlParameter[] para, CommandType cmdType);
}
public class SQLExecute : DBExecute
{
SqlConnection cnn;
string connectionString;
public SQLExecute()
{
this.connectionString = ConfigurationSettings.AppSettings["SqlConnectionString"];
}

public SQLExecute(string SqlConnectionString)
{
this.connectionString = SqlConnectionString;
}
public override DataTable Execute_Table(string Text, SqlParameter[] para, CommandType cmdType)
{
using (cnn = new
SqlConnection(this.connectionString))
{
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
DataTable table = new DataTable();
cnn.Open();
table.Load(cmd.ExecuteReader());
return table;
}
}

public override DataTable Execute_Table1(string Text, SqlParameter[] para, CommandType cmdType)
{
using (cnn = new
SqlConnection(this.connectionString))
{
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
DataTable table = new DataTable();
cnn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(table);
return table;
}
}
public override IDataReader Execute_DataReader(string Text, SqlParameter[] para, CommandType cmdType)
{
try
{
cnn = new SqlConnection(this.connectionString);
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
cnn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection) ;
}
catch
{
return null;
}
finally
{

}
}
public override DataSet Execute_Tables(string Text, SqlParameter[] para, CommandType cmdType)
{
using (cnn = new
SqlConnection(this.connectionString))
{
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
DataSet ds = new DataSet();
cnn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds;
}
}
public override int Execute_Modify(string Text, SqlParameter[] para, CommandType cmdType)
{
using (cnn = new
SqlConnection(this.connectionString))
{
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
cnn.Open();
return cmd.ExecuteNonQuery();
}
}
public override object Execute_Object(string Text, SqlParameter[] para, CommandType cmdType)
{
using (cnn = new
SqlConnection(this.connectionString))
{
SqlCommand cmd = new SqlCommand(Text, cnn);
cmd.CommandType = cmdType;
if (para != null)
cmd.Parameters.AddRange(para);
cnn.Open();
return cmd.ExecuteScalar();
}
}
}
}

hanhkhat
18-09-2010, 01:17 PM
có thể là nó khác nhau chỗ add và addrange.
bạn thay
cmd.Parameters.Add(s1);
thành
cmd.Parameters.AddRange(s1);
thử xem nhé