对于使用Data的新手,我希望我能正确地问这个问题.如何从DataSet中选择哪些列进入DataTable?我知道我可以通过使用填充DataTable ...
DataTable table = dataSet1.Tables[0];
Run Code Online (Sandbox Code Playgroud)
但这会带来所有列.如何仅使用特定列填充DataTable?
我正在使用.NET 3.5,C#和SQL CE 3.5单表数据库.
谢谢.
我有这个非常简单的麻烦,我似乎无法克服.
我正在尝试使用sql ce执行此代码行:
SqlCeCommand comSelect = new SqlCeCommand("SELECT * FROM Items WHERE barcode = '@barcode'", conn);
comSelect.Parameters.Add(new SqlCeParameter("barcode", System.Data.SqlDbType.NVarChar, 100)).Value = barC;
Run Code Online (Sandbox Code Playgroud)
出于一些奇怪的原因 - 它总是以空的形式返回 - 即没有找到结果.如果我将参数值单独放在查询字符串中,如下所示:
SELECT * FROM Items WHERE barcode = '123ABC'
Run Code Online (Sandbox Code Playgroud)
然后它完美无缺.我将添加列是一个NVarChar.
知道为什么这不起作用的任何想法?
我刚刚完成了Visual C#2008 SP1的全新安装,在此过程中还安装了Sql Compact 3.5 SP1.不过,当我尝试连接到sdf文件时:
SqlCeConnection conn = new SqlCeConnection(connectionString);
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
无法加载与版本8080的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.
我有点困惑,我应该安装/更新什么呢?
我有以下代码;
Dim rdr As SqlCeDataReader = cm_sel.ExecuteReader
If rdr.HasRows Then
While rdr.Read
Documents.DeleteDocument(rdr.Item("fID"))
End While
End If
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
如果基础游标不可滚动,则SQL Server Compact不支持对HasRows属性的调用.
那么在实际读取DataReader之前我应该如何检查数据是否存在?
编辑
整个代码:
Dim con As New SqlCeConnection(ConfigurationManager.ConnectionStrings("MyConnectionString").ToString)
Dim cm_sel As New SqlCeCommand("SELECT fID FROM Files WHERE fCatID=" & catID, con)
Try
con.Open()
Dim rdr As SqlCeDataReader = cm_sel.ExecuteReader
If rdr.HasRows() Then
While rdr.Read
Documents.DeleteDocument(rdr.Item("fID"))
End While
End If
Return "{'result':'ok'}"
Catch ex As Exception
Return "{'result':'error'}"
Finally
con.Close()
con.Dispose()
End Try
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚为什么这个简单的更新命令不起作用:
private void button1_Click(object sender, EventArgs e)
{
SqlCeCommand cmd = new SqlCeCommand("UPDATE tbl_Settings set password = '1234')", conn);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
There was an error parsing the query. [ Token line number = 1,Token line offset = 42,Token in error = ) ]
.
我的select和insert命令完美无缺:
SqlCeCommand cmd = new SqlCeCommand("SELECT password FROM tbl_Settings", conn);
string password = cmd.ExecuteScalar().ToString();
Run Code Online (Sandbox Code Playgroud) 以下代码在执行期间出错.
string connectionString = "Data Source=D:\\Base.sdf;Persist Security Info=False";
SqlConnection sqlConnection = new SqlConnection(connectionString))
sqlConnection.Open();
Run Code Online (Sandbox Code Playgroud)
错误是:
在建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server未配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 找到指定的服务器/实例时出错)
我试过SqlCeConnection而不是SqlConnection,编译器找不到该类的库.
请帮助解决这个问题.
我有一个执行SQL查询的函数.根据注册表值,它将命中SQL Server或SQL Server Compact Edition.如果它使用的是SQL Server CE,则设置recordSet变量的行应如下所示:
SqlCeDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)
对于SQL Server,它应该如下所示:
SqlDataReader recordSet = da.ExecuteSQLCommand(selectCommand);
Run Code Online (Sandbox Code Playgroud)
我试图将所有这些放在函数开头的if/then语句中,但似乎无法弄清楚如何在if/then中设置Type.这是我的(部分)代码:
public static string SqlQuery(string selectCommand, int regval)
{
var recordSet = null;
string selectCommand = "select * from whatever";
if (regval == 0)
{
SqlDataReader recordSet = null;
}
else
{
SqlCEDataReader recordSet = null;
}
recordSet = da.ExecuteSQLCommand(selectCommand);
}
Run Code Online (Sandbox Code Playgroud)
问题是除非我在if/else之前声明了recordSet变量,否则我不能在之后使用它.但是,如果我在if/else之前声明它,我就无法更改类型.
我有一个产品、类别和“productsInCategories”的数据库,看起来像:
用户
id? name ?
????????????
1 ? john ?
69? jane ?
Run Code Online (Sandbox Code Playgroud)
产品
id? name ? cost ?description?
???????????????????????????????
21?snickers? 23 ? foo ?
34? mars ? 20 ? bar ?
37? daim ? 21 ? oofrab ?
79? banana ? 8 ? foobar ?
80? apple ? 10 ? barfoo ?
Run Code Online (Sandbox Code Playgroud)
类别
id? userId ? name ?
???????????????????????
10? 69 ?chocolate?
55? 69 ?favorites?
20? 1 ? fruit ?
Run Code Online (Sandbox Code Playgroud)
产品分类
categoryId?productId?
?????????????????????
10 ? 21 ?
10 ? …Run Code Online (Sandbox Code Playgroud) 有人可以解释为什么会这样吗?我正在尝试从 mysql 数据库中检索数据,但发生此错误,但当我检索一个整数值(例如 TeacherID)时,相同的代码工作正常。检索非数字值时出现错误。
string connectionString = (@"Data Source=(LocalDB)\v11.0;AttachDbFilename=\myDB.mdf;Integrated Security=True");
string sql = "SELECT * FROM Teacher WHERE Subject = "+ TSubject.Text;
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "Teacher");
connection.Close();
DataGridViewStudent.DataSource = ds;
DataGridViewStudent.DataMember = "Teacher";
Run Code Online (Sandbox Code Playgroud)
我已经检查过拼写错误或类型,一切正常。所以是什么问题。
我在Wigley和Wheelwright的"Microsoft .NET Compact Framework"中修改了下面的代码:
SqlCeConnection cn = new SqlCeConnection(@"Data Source=\My Documents\Traffic.sdf");
String sSQL= "SELECT CarID, Reg, Location FROM Cars");
SqlCeCommand cmdSelect = new SqlCeCommand(sSQL, cn);
cmdSelect.CommandType = CommandType.Text;
SqlCeDataReader dtr = cmdSelect.ExecuteReader(CommandBehavior.Default); // It's "cmd." instead of "cmdSelect." in the book, but that doesn't compile
while (dtr.Read())
{
ListViewItem item = new ListViewItem(dtr.GetInt32(0).ToString());
item.SubItems.Add(dtr.GetString(1));
item.SubItems.Add(dtr.GetString(2));
listViewCars.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)
...所以我的代码是这样的:
private String getDataAsXMLFromTable(String tableName, String siteNum)
{
String strXML;
StringBuilder sbXML = new StringBuilder();
String lineId;
String refNum;
String upcCode;
String desc; …Run Code Online (Sandbox Code Playgroud) compact-framework executereader windows-ce sql-server-ce sqlcedatareader
sql-server-ce ×10
c# ×6
sql ×3
.net ×1
asp.net ×1
database ×1
sql-server ×1
vb.net ×1
windows-ce ×1
winforms ×1