有一个相关的问题:
但我想知道差异是什么,以及不同方式是否存在任何问题.
我通常使用这样的结构:
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(SQL, conn))
{
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = Settings.Default.reportTimeout;
cmd.Parameters.Add("type", SqlDbType.VarChar, 4).Value = type;
cmd.Connection.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(ds);
}
//use data
}
Run Code Online (Sandbox Code Playgroud)
现在有几种方法可以添加cmd参数,我想知道哪个是最好的:
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 20).Value = "Bob";
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = "Bob";
cmd.Parameters.Add("@Name").Value = "Bob";
cmd.Parameters.AddWithValue("@Name", "Bob");
Run Code Online (Sandbox Code Playgroud)
在我假设的变量传递中具有字段的长度是不可取的,因为它是可以在数据库中稍后更改的魔术值.它是否正确?它是否会导致以这种方式(性能或其他)传递varchar的任何问题,我假设它默认为varchar(max)或数据库等效.我很高兴这会奏效.
更关心我的部分是如果我使用上面列出的第三或第四个选项,则丢失SqlDbType枚举我根本不提供类型.有没有这种情况不起作用的情况我可以想象varchar被错误地转换为char或者反之亦然的问题,或者可能是带有小数的问题....
就数据库而言,我认为字段类型的变化远不如长度,因此值得保留?
我正在调整其他人编写的一些代码,并且需要为了时间而返回DataTable.
我有这样的代码:
using (SqlCommand command = new SqlCommand(query, conn))
{
//add parameters and their values
using (SqlDataReader dr = command.ExecuteReader())
{
return dr;
}
Run Code Online (Sandbox Code Playgroud)
但是返回数据表的最佳方法是什么?
标题是我的问题.我用Google搜索并尝试类似的东西
mysql> !\ clear
mysql> !\ cls
mysql> system cls
mysql> system clear
blah blah ...
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用.有人告诉我如何清除屏幕,就像cls窗口中的命令一样
我正在创建一个项目,我需要在单个sql连接中运行2-3个sql命令.这是我写的代码:
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\project.mdf;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("select * from " + mytags.Text + " ", con);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.Read())
{
con.Close();
con.Open();
SqlCommand cmd1 = new SqlCommand("insert into " + mytags.Text + " values ('fname.lname@gmail.com','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','"+mytags.Text+"')", con);
cmd1.ExecuteNonQuery();
label.Visible = true;
label.Text = "Date read and inserted";
}
else
{
con.Close();
con.Open();
SqlCommand cmd2 = new SqlCommand("create table " …Run Code Online (Sandbox Code Playgroud) 我应该什么时候使用Parameters. Add/AddWithValue?在下面的MSDN示例中,他们使用Parameters.Addfor int和Parameters.AddWithValueforstring
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = customerID;
command.Parameters.AddWithValue("@demographics", demoXml);
Run Code Online (Sandbox Code Playgroud)
什么是最好用的 datetime
我通常使用这样的代码:
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString))
{
var command = connection.CreateCommand();
command.CommandText = "...";
connection.Open();
command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
我会command自动处理吗?或者不是,我必须把它包装成using块?是否需要处理SqlCommand?
以下方法应该在打开的连接上进行脏读.没有交易.我在哪里设置IsolationLevel?
public string DoDirtyRead(string storedProcName, SqlConnection connection)
{
using (SqlCommand command = new SqlCommand(storedProcName, connection))
{
command.CommandType = CommandType.StoredProcedure;
// HOW TO SET IsolationLevel to READ_UNCOMMITTED here?
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud) 在使用SqlCommand对象时,如何确定使用超时的时间长度?
在我正在处理的部分代码上(由其他人编写)我有:
cmd.CommandTimeout = 60;
Run Code Online (Sandbox Code Playgroud)
我觉得这很短暂.但是,我在论坛上看到一些人谈论将它设置为30000,这似乎太长了.
我怎么知道什么是我的应用程序的最佳选择?
我在visual studio 2010中制作了一个C#windows Form Application.
该应用程序连接到mysql数据库,我想在其中插入数据.
我现在有这部分代码:
MySqlConnection connection;
string cs = @"server=server ip;userid=username;password=userpass;database=databse";
connection = new MySqlConnection(cs);
connection.Open();
MySqlCommand command = new MySqlCommand();
string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES ('@mcUserName', '@mcUserPass', '@twUserName', '@twUserPass')";
command.CommandText = SQL;
command.Parameters.Add("@mcUserName", mcUserNameNew);
command.Parameters.Add("@mcUserPass", mcUserPassNew);
command.Parameters.Add("@twUserName", twUserNameNew);
command.Parameters.Add("@twUserPass", twUserPassNew);
command.Connection = connection;
command.ExecuteNonQuery();
connection.Close();
Run Code Online (Sandbox Code Playgroud)
连接很好.这样可行.
我在这里强调,我现在的方式是进行查询的保存方式.这还不错吗?
而现在到了真正的问题.使用上面的代码,我在visual studio中收到以下警告:
'MySql.Data.MySqlClient.MySqlParameterCollection.Add(string, object)' is obsolete: '"Add(String parameterName, Object value) has been deprecated. Use AddWithValue(String parameterName, Object value)"'
Run Code Online (Sandbox Code Playgroud)
该警告适用于每个parameters.add
它甚至不起作用,因为插入的值是@mcUserName,@ mcUserPass等等,而不是变量mcUserNameNew等所持有的值...... …
要寻找拯救,需要使用字节数组密码在此使用的方法后
那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用SqlCommand传递和检索字节数组?
sqlcommand ×10
c# ×7
ado.net ×4
sql-server ×3
.net ×2
mysql ×2
parameters ×2
.net-3.5 ×1
bytearray ×1
command-line ×1
datatable ×1
deprecated ×1
dispose ×1
sql ×1
t-sql ×1
windows ×1